Node.js和JavaScript有时会使像我这样的初学者感到困惑。试用摩卡和导出,我在源代码typoo.js中做了一个错字:
module.exports,trial = function() {
console.log('trial')
}
请注意module.exports,
本来是“。”之后的逗号“,”。如果我没有不小心输入逗号。
坦白说,我对结果感到满意。它按我的意愿工作,而不是将导出与函数定义分开。逗号是如何工作的?
const blah = require('../../../typoo');
trial()
摩卡日志“试用”
在松散模式下分配给未声明的标识符会创建一个全局变量(我称其为“隐式全局变量的恐怖”)。这就是为什么你拥有的作品,因为
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] 删除。
我来说两句