对于像我这样的初学者来说,Node.js和JavaScript有时会让人感到困惑。尝试使用摩卡和导出,我在源码typoo.js中发了一个拼写错误:
module.exports,trial = function() {
console.log('trial')
}
在module.exports,
之后请注意逗号“,”它本来是“。”如果我没有意外输入逗号。
坦率地说,我对结果很满意。它按照我的意愿工作,不是从函数定义中分离导出。 为什么逗号的工作方式如我所未预料但符合我的意图?
const blah = require('../../../typoo');
trial()
摩卡日志“试用”
答案 0 :(得分:3)
在松散模式下分配未声明的标识符会创建一个全局变量(我称之为The Horror of Implicit Globals)。这就是你工作的原因,因为
module.exports,trial = function() {
console.log('trial')
}
使用comma operator,其中每一边都是操作数。两个表达式都被评估,所以你有
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";
到模块的顶部。在严格模式下,分配给未声明的标识符是它应该始终存在的错误。 : - )