我以为myColor可以从sayColor()本地上下文访问它,但是即使在第一个警报后声明myColor也不可以。为什么?
myColor
sayColor()
var myColor = "blue"; function sayColor() { alert(myColor); //undefined expected blue var myColor = "green"; alert(myColor); //green } sayColor();
这里发生的事情称为“吊装”。使用var和函数语句的变量声明“悬挂”在其包含范围的顶部。(请注意,从ES6开始,let并且const具有不同的语义。)因此,就浏览器而言,您的代码实际上如下所示:
var
let
const
var myColor = "blue"; function sayColor() { var myColor; alert(myColor); //undefined expected blue myColor = "green"; alert(myColor); //green } sayColor();
从MDN:
变量的每个定义实际上是在变量范围的顶部声明了变量,并在定义所在的位置进行了赋值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
点击生成二维码
我来说两句