我正在关注 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 文件中运行,并且得到了预期的结果。