全局上下文和Node.js中的“this”

时间:2014-07-24 23:38:01

标签: javascript node.js

以下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?

1 个答案:

答案 0 :(得分:1)

“this”在nodejs的外观中不是全局的。而是使用global.varName。

最佳做法是使用GLOBAL.VAR_NAME,以便您不会经常这样做。

如果你想与浏览器保持一致,我建议使用browserify,因为它让你在客户端使用全局,并且需要甚至为你合并你的js!只是我的两分钱。