gpt4 book ai didi

Javascript 变量提升在 Scratchpad 中的行为不符合预期

转载 作者:行者123 更新时间:2023-11-28 03:56:18 25 4
gpt4 key购买 nike

我正在关注 Mozilla 开发人员 Javascript 教程,其中有一个关于变量托管的部分。该教程曾提到使用 Firefox 的 Scratchpad 来编辑 javascript 以快速保存并查看代码运行。

我使用的代码(从教程复制粘贴)是:

/**
* Example 1
*/
console.log(x === undefined); // true
var x = 3;

/**
* Example 2
*/
// will return a value of undefined
var myvar = 'my value';

(function() {
console.log(myvar); // undefined
var myvar = 'local value';
})();

但是console.log(x === undefined)返回false。如果我运行 console.log(x); ,它实际上会返回 3 。下面的 console.log(myvar); 按预期返回未定义。

我很困惑这里应该发生什么,文档是否可能不正确/过时,或者 Scratchpad 解释此代码是否与标准 JavaScript 不同,如果是,为什么?我尝试在 .js 文件中运行,并得到了预期的结果。

最佳答案

在 Immediate 函数中,您重新声明了 myvar 变量:

(function() {
console.log(myvar); // undefined
var myvar = 'local value';
})();

因此,来自 window 范围的全局 myvar 变量将被提升,这就是它在 console.log(myvar );.

另一方面,如果您将其替换为 console.log(x);,它将打印 3,因为您尚未重新声明 x 变量。

您的问题:

对于第一个 console.log(x === undefined); 语句,仅当您重新执行时才会返回 false它,所以也许在你的情况下它被执行了两次。

关于Javascript 变量提升在 Scratchpad 中的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47514829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com