以下JS代码执行一个非常函数并定义一个函数met()并使其从全局上下文中可见:
(function(GLOB){
GLOB.met = function(s) {
console.log(s);
}
})(this);
met("Hi!");
在浏览器中运行时,工作正常并显示“嗨!”在控制台上。 但是,在Node.js中运行时,最后一行会抛出错误“met is not defined”。
我现在更改最后一行:
this.met("Hi!");
它也适用于Node.js。
为什么第一个版本不适用于Node? p>
答案 0 :(得分:1)
“this”在nodejs的外观中不是全局的。而是使用global.varName。
最佳做法是使用GLOBAL.VAR_NAME,以便您不会经常这样做。
如果你想与浏览器保持一致,我建议使用browserify,因为它让你在客户端使用全局,并且需要甚至为你合并你的js!只是我的两分钱。