为什么 JavaScript 中的这段简单代码会错误地进行变量提升?
Why is this simple code from JavaScript incorrectly variable hoisting?
我正在尝试理解 JavaScript 变量提升,但我对 Mozilla 指定的文档感到困惑。
我指的文档是 here:
console.log(x === undefined); // true
var x = 3;
我正在 Google Chrome 上使用开发者控制台来测试最新版本的代码。当我执行上面的代码时,当 Mozilla 文档指出应该返回 true.
时,我会返回 false
上面的输出意味着在 console.log() 为 运行 之前 x 肯定被设置为 3。 Mozilla 指定的这份文档是否不正确,或者我在这里有什么不理解的地方?
第一次 运行 它会 return true
,因为 x
开始时是 undefined
。在你运行
var x = 3
之后,x
设置为3
,所以下次你运行和console.log(x === undefined)
比较它returns false
,因为 x
不再是 undefined
。
i 运行 Mozilla 和 chrome 它是真的:
第一次答案是正确的,因为它没有定义,但下次会出错。
清除控制台不会改变答案,您必须重新启动浏览器。
我正在尝试理解 JavaScript 变量提升,但我对 Mozilla 指定的文档感到困惑。
我指的文档是 here:
console.log(x === undefined); // true
var x = 3;
我正在 Google Chrome 上使用开发者控制台来测试最新版本的代码。当我执行上面的代码时,当 Mozilla 文档指出应该返回 true.
时,我会返回 false上面的输出意味着在 console.log() 为 运行 之前 x 肯定被设置为 3。 Mozilla 指定的这份文档是否不正确,或者我在这里有什么不理解的地方?
第一次 运行 它会 return true
,因为 x
开始时是 undefined
。在你运行var x = 3
之后,x
设置为3
,所以下次你运行和console.log(x === undefined)
比较它returns false
,因为 x
不再是 undefined
。
i 运行 Mozilla 和 chrome 它是真的: 第一次答案是正确的,因为它没有定义,但下次会出错。 清除控制台不会改变答案,您必须重新启动浏览器。