javascript作用域之声明提升
第一:变量声明提升
alert(a);
alert(a); var a=0;
上面两段代码,第一个直接报错,第二个输出undefined,WHY?答案:变量声明被提前了
第二段代码的执行应该是类似于下面这段代码的
var a; alert(a); a=0;
第二:函数声明提前
alert(a); function a(){};
这个时候会输出a的函数体
第三:变量、函数混合
alert(a); var a=0; alert(a); function a(){} alert(a);
函数声明、变量声明都会被提前,但函数声明的优先级会比较高,会忽略变量的声明
真正执行的时候类似与如下代码
var a;//变量声明提前 a=function(){};//类似于函数声明提前(只是为了容易理解才这样写的) alert(a); a=0; alert(a); alert(a);
上面几个小问题不容易说清楚的,直接用代码说明不知道是不是能帮助理解。因为原来看有些文章的时候,会出现看不懂的情况,所以想到用这种形式进行分析。

浙公网安备 33010602011771号