请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术发帖,必有回复! 做最受欢迎的Java论坛

疯狂Java联盟

 找回密码
 加入联盟
查看: 25|回复: 0

JavaScript变量作用域自动提升

[复制链接]
发表于 2017-12-6 23:55:30 | 显示全部楼层 |阅读模式
在讲变量作用域自动提升之前,先来思考一段代码:
  • <script type="text/javascript">
  • //在函数外面声明一个名为a的变量
  • var a = 100;
  • function test()
  • {
  •     // 只要a变量有赋予值,那么就一定会进入这个if分支!
  •     if( a )
  •     {
  •         alert("if进去了");
  •     }
  •     // 在函数内部,再声明一个相同名称的a变量
  •     var a = 200;
  •     alert("a的值" + a );
  • }
  • // 执行这个函数,你知道会弹出哪些提示吗?
  • test();

  • </script>



其实JavaScript里面有一个叫做【变量提升】的概念:所有在函数里面声明的变量,不管在哪个位置, 声明函数的地方总是在函数最开始的地方。
因此上面的代码等同于如下代码:

  • <script type="text/javascript">
  • var a = 100;
  • function test()
  • {
  •     // 原本是var a = 200的;但是经过解析器执行以后,var a 被放到了函数最开始
  •     var a;
  •     // 这里因为a变量未赋予值,所以if无法进入
  •     if( a )
  •     {
  •         alert("if进去了");
  •     }
  •     a = 200;
  •     alert("a的值" + a );
  • }
  • test();
  • </script>



通过第二段代码,我们可以发现:函数里面的局部变量a,会在执行之前先解析放到函数开始的地方,这个代码用于简单理解【变量提升】的概念。
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

视频、代码、电子书下载
请关注"疯狂图书"公众号
QQ交流1群: 545923995  未满

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11063141号 )

GMT+8, 2017-12-18 20:36 , Processed in 0.276565 second(s), 6 queries , File On.

快速回复 返回顶部 返回列表