javascript中函数作用域之”提升“

来源:互联网 发布:信誉源码 编辑:程序博客网 时间:2024/06/10 07:17

     javascript中函数作用域之变量提升


       当我们在函数内部用关键字var声明一个变量的时候,此变量的作用域限制在当前函数。

       提升:在一个作用域内部,不管一个变量用var声明的位置在哪里,这个变量属于当前整个作用域,并且在当前作用域的任何位置都可以访问它。在javascript中,这种行为/现象称之为“提升”,即一个变量在一个作用域的任何位置用var声明,javascript引擎都会把这些用var声明的变量“移动”到当前作用域的开始处。

     谈到javascript这种“提升”现象,不得不想到大学时代学习c语言的时候,老牌C语言编译器里,C语言中,变量只能在函数的开头处声明和定义,在函数里要用到的变量必须要在开头处声明定义,声明定义的前面不能有任何其他非声明定义的语句。自从c++语言打破了这个限制,c新编译器也没有这个硬性限制了。

    依赖javascript这种“变量提升”机制并不是一个好主意。“函数提升”我们一般用的比较多。

   所以,“函数提升”放心用,当在一个作用域内使用变量的地方位于声明变量的地发之前,而带来的"变量提升“现象,我们最好不要用了。

  提升现象代码例子:

var a = 2;foo();function foo(){    a = 3;    console.log(a);    var a;}console.log(a);

结果:


 


0 0