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);

 

 

上面几个小问题不容易说清楚的,直接用代码说明不知道是不是能帮助理解。因为原来看有些文章的时候,会出现看不懂的情况,所以想到用这种形式进行分析。

 

posted @ 2015-02-27 16:55  想子  阅读(112)  评论(0)    收藏  举报