【发布时间】:2020-07-23 06:54:06
【问题描述】:
在浏览器和 NodeJS REPL 中,以下打印 true,但在 NodeJS 下作为文件(即node filename.js)运行,它打印 false。为什么?
在非严格模式下,在全局上下文中。
var x = 1
console.log(window.hasOwnProperty('x')) // replace `window` with `global` for NodeJS
我确定我遗漏了一些明显的东西。
【问题讨论】:
-
Node 对浏览器上下文中的全局 (
window) 变量具有模块作用域。 -
我会接受这个答案。
-
@52d6c6af 这是文档的link,清楚地解释了这一点。
-
该文档肯定是错误的。 Node 中的顶级范围是 全局范围 - 否则内在函数将超出模块的范围。只是模块中的变量声明发生在模块的范围内。
-
@52d6c6af 表示“[模块代码]的顶级范围不是全局范围”,其中“顶级”指的是评估代码,不是整个程序的范围层次结构。
标签: javascript