JavaScript测试:作用域、变量提升、函数提升

 

var foo = 1;  
function bar() { 
   alert(foo); if (!foo) { var foo = 10; } alert(foo); } bar();

 

var foo = 1;  
function bar() {  
    alert(foo);
    if (!foo) {  
        foo = 10;  
    }  
    alert(foo);  
}  
bar(); 

 

 

 

var a=1;
function b(){
  alert(a);
  if(!a){
    a=10;
  }
  alert(a);
  function a(){}
}
b();
alert(a);

 

var x = 1;  
console.log(x);
if (true) {  
    var x = 2;  
    console.log(x);
}  
console.log(x);

 

  • 函数声明和变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部。
  • 请注意,变量赋值并没有被提升,只是声明被提升了。
  • 但是,函数的声明有点不一样,函数体也会一同被提升。但是请注意,函数的声明有两种方式。
  • var与不var是有区别的. 没有var的写法,其变量不会被提升。

 

Reference:

  • http://blog.csdn.net/sunxing007/article/details/9034253

 

posted @ 2017-03-26 23:01  hexiaoco  阅读(88)  评论(0)    收藏  举报