代码块和预编译

来源:互联网 发布:管家婆软件初始密码 编辑:程序博客网 时间:2024/06/05 08:44

代码块

在js中,一个代码块指的是一对script标签包含的代码段

需要注意的是,每段代码块都是相互独立的,但是,在上一个代码块定义的全局变量可以在下一个代码块中直接使用,反之不行.

预编译

预编译的作用有两个:

1为扫描所有代码,判断有无语法错误

2为提示,如果没有错误,就进行变量提升函数提升

变量提升和函数提升会把变量和整个函数体放在代码块即script的最前面因此,可以先使用,后定义函数

       注意:不加var的变量不会报错,但也不会进行提升,所以类似如下会报错      

console.log(a);a= 2;

      提升:提升是预编译的事,他只管提升,不管逻辑问题.逻辑问题是执行时候的事,不归他管

所以,循环中,判断中,函数中,只要有var定义的变量,他都会提升,当然,如果用这样的方式定义的函数 var f = function(){}定义的函数,只提升f,不提升函数体

另外:如果定义一个变量和一个函数,起了一样的名字,console时的结果是函数.因为一等公民.

这里的一些问题,经常会把人搞懵逼.不过,如果懂了 执行上下文  基本是没什么问题的