首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs全局函数

问Nodejs全局函数
EN

Stack Overflow用户
提问于 2015-04-09 16:49:24
回答 1查看 17.5K关注 0票数 12

我有一个非常基本的函数,如下所示,它位于一个名为functions.js的文件中

代码语言:javascript
复制
function echo(input){
    process.stdout.write(echo);
}

当我添加文件并调用echo()时,如下所示:

主档案:

代码语言:javascript
复制
require("functions.js");
require("another_file.js");

another_file.js

代码语言:javascript
复制
echo("hello!");

它给了我以下错误:

代码语言:javascript
复制
ReferenceError: echo is not defined

对于我来说,有没有办法使一个像这样的全局函数不需要使用exports

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-09 17:10:16

在functions.js中,您可以访问节点的global变量,这与浏览器中的window变量类似。正如柏拉图在评论中所建议的那样,您可以通过简单地执行echo = function echo(input){ ... }将其添加到全局中。但是,如果使用严格模式,这将引发错误,这是为了捕捉常见错误(比如意外创建全局变量)。

安全地将echo添加为全局变量的一种方法是将其添加到全局global变量中。

代码语言:javascript
复制
"use strict";

global.echo = function echo(input) {
    process.stdout.write(input);
}

我认为通常使用exports是更好的做法,因为否则一旦包含了functions.js (来自任何其他文件),您就可以在每个文件中访问echo,并且很难找到它的来源。

要做到这一点,您需要让您的functions.js看起来更像:

代码语言:javascript
复制
"use strict";

module.exports.echo = function echo(input) {
    process.stdout.write(input);
}

然后在您的主脚本中执行如下操作:

代码语言:javascript
复制
"use strict";

var functions = require("./functions.js");

functions.echo("Hello, World");
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29544417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档