module.exports的意外速记

廷巴耶尔

Node.js和JavaScript有时会使像我这样的初学者感到困惑。试用摩卡和导出,我在源代码typoo.js中做了一个错字:

module.exports,trial = function() {
    console.log('trial')
}

请注意module.exports,本来是“。”之后的逗号“,”。如果我没有不小心输入逗号。

坦白说,我对结果感到满意。它按我的意愿工作,而不是将导出与函数定义分开。逗号是如何工作的?

const blah = require('../../../typoo');
trial()

摩卡日志“试用”

TJ人群

在松散模式下分配给未声明的标识符会创建一个全局变量(我称其为“隐式全局变量的恐怖”)。这就是为什么你拥有的作品,因为

module.exports,trial = function() {
    console.log('trial')
}

使用逗号运算符,其中的每一边都是一个操作数。两个表达式都被求值,所以

module.exports

作为自己的表达方式,以及

trial = function() {
    console.log('trial')
}

作为自己的表达。

您几乎可以肯定不想创建一个全球性的公司。相反,执行您想做的事情,使trial模块导出。如果要更简洁,可以删除该module.部分:

exports.trial = function() {
    console.log('trial')
};

(还要注意,我已经添加了缺少的分号。)

然后当然要使用它:

const blah = require('../../../typoo');
blah.trial();

...或该主题的任何变体,例如:

const trial = require('../../../typoo').trial;
trial();

...要么

const { trial } = require('../../../typoo');
trial();

还建议通过添加以下选项使用严格模式而不是默认的宽松模式

"use strict";

到模块顶部。在严格模式下,分配未声明的标识符是它本应一直存在的错误。:-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章