当局部变量和全局变量同名时,局部变量会覆盖全局变量
<code>
代码第一次输出的scope值并不是“全局变量”,而是undefined.这是什么原因呢?函数在1处定义scope局部变量,怎么在1处之前也不能访问全局的scope变量呢?
此处需要理解javaScript的变量提升机制。所谓变量提升,指的是变量声明总是会被解释器“提升”到函数体的顶部,这意味着上面程序中1处定义了scope局部变量,但解释器会提升该scope变量,将该变量的声明提升到函数体的顶部。
注意:变量提升只是提升变量声明部分,并不会提升变量赋值部分
因此,上面的test()函数实际上等同于
<code>
分享到:
閱讀更多 碼農編程 的文章
關鍵字: 全局变量 浏览器 JavaScript
相關文章: