关于javascript变量的声明提升(hoisting)的笔记

关于javascript的变量声明,之前做的多的是C系列,转换过来比较顺畅。

变量不用声明,用就直接用,还就是全局变量。也没有类型规定,很方便。只是遇到一些麻烦。

比如这个,我第一次看到时,也纠结半天没有答案。

 

 

 var v = "hello";
(function(){
   console.log(v);
   var v = "world";
})();

这个运行结果就是 undefined

显示undefined就说明v这个变量被声明了,但是没有赋值。也就相当于

 var v = "hello";
(function(){
   var v; //declaration hoisting提前声明了
   console.log(v);
   v = "world";
})();

类似的,函数也是这样的。

<code>(</code><code>function</code><code>(){</code>
 fun1();
  function fun1(){
   console.log(123); 
  }
})();

这个显示了123;

等价于

<code>(</code><code>function</code><code class="jscript plain">(){
</code> function fun1(){//提前声明了函数
  console.log(123); 
 }
 fun1();
 function abc(){
  console.log(123); 
 }
})();

 

 


 

 


 

 


 

参考12

此条目发表在js分类目录。将固定链接加入收藏夹。