以下 JS 代码执行匿名函数并定义函数 met() 并使其在全局上下文中可见:
(function(GLOB){
GLOB.met = function(s) {
console.log(s);
}
})(this);
met("Hi!");
在浏览器中运行时,工作正常并显示“Hi!”在控制台上。 但是,当在 Node.js 中运行时,最后一行会抛出错误“met is not Define”。
当我现在更改最后一行时:
this.met("Hi!");
它在 Node.js 上也运行良好。
为什么第一个版本不能在 Node 上运行?
最佳答案
“This”在nodejs的外部范围中不是全局的。而是使用 global.varName。
最佳做法是使用 GLOBAL.VAR_NAME,这样您就知道不要经常这样做。
如果你想与浏览器保持一定的一致性,我建议你使用 browserify,因为它可以让你在客户端使用 global,以及 require 甚至可以为你合并你的 js!只是我的两分钱。
关于javascript - Node.js 中的全局上下文和 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24945745/