码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-31 23:50:08      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:javascript中函数作用域之提升   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中函数作用域   javascript提升   

原文地址:http://blog.csdn.net/doctor_who2004/article/details/48140367

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!