javascript - Node.js 中的全局上下文和 "this"

标签 javascript node.js

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

相关文章:

javascript - jquery 或 javascript 中是否有 isTextSelected() 的替代方法?

javascript - 在 Firefox 中加载新页面时如何防止未完成的 jquery ajax 事件抛出错误

javascript - JS setTimeout 和 jQuery 函数

javascript - MongoDB(Node)findOne函数按ID搜索时不返回结果

javascript - 在多个条件下过滤 javascript 数组

javascript - 如何将 Dojo/Dijit ColorPalette 的值获取到字符串

javascript - 我使用 auth0 进行用户身份验证,并且有一个用于 CRUD 帖子的 API(标题、img、desc)。如何对 CRUD api 进行经过身份验证的调用?

node.js - 带有标志 'a' 的 nodejs fs.openSync() 无法创建不存在的文件

node.js - 无法使用 phantomJS 获取 iframe 的元素

javascript - ActiveDirectory 中的 ThumbnailPhoto 返回错误