标签:javascript中函数作用域之提升 javascript中函数作用域 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);
版权声明:本文为博主原创文章,未经博主允许不得转载[http://blog.csdn.net/doctor_who2004]。
标签:javascript中函数作用域之提升 javascript中函数作用域 javascript提升
原文地址:http://blog.csdn.net/doctor_who2004/article/details/48140367