阅读mozilla文档后,我发现了这一点:
在全局执行上下文中(在任何函数之外),这指的是全局对象,无论是否处于严格模式下。
在玩了一点示波器之后,我发现在node.js REPL中…
> this === global true
但是当我用同一行创建脚本时…
$ cat > script.js console.log(this === global) $ node script.js false
是否有一个原因?还是一个错误?
节点REPL是全局的。文件中的代码位于“模块”中,它实际上只是一个函数。
REPL
您的代码文件变成了如下所示的简化示例:
var ctx = {}; (function(exports) { // your code console.log(this === global); }).call(ctx, ctx);
请注意,它是使用来执行的.call(),并且该this值设置为预定义的对象。
.call()
this