为什么 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 它是真的: 第一次答案是正确的,因为它没有定义,但下次会出错。 清除控制台不会改变答案,您必须重新启动浏览器。