我正在尝试同时使用正常或箭头功能将功能导出到.js文件中。但是我不知道推荐哪个。
导出正常功能
module.exports = function(id) {
console.log(id);
};
导出箭头功能
const test = id => {
console.log(id);
}
module.exports = test;
下面是我的一些疑问。
如果在箭头功能上建议使用普通功能,那我为什么 不建议使用箭头功能。
如果建议使用箭头功能而不是普通功能,那么为什么不建议我使用普通功能。
我如何理解推荐的语言,特别是在导出函数的情况下?
答案 0 :(得分:2)
这两个代码段不相同。第一个代码段生成匿名函数,而第二个代码段生成命名函数require('...').name === 'test'
(这可能对调试很有用)。
更合适的比较是
module.exports = function test(id) {
console.log(id);
};
vs
const test = id => {
console.log(id);
}
module.exports = test;
在这种情况下,这些箭头和常规功能之间没有区别,因为它们不使用特定于它们的功能(例如this
上下文)。
匿名箭头函数需要输入较少的字符,但是当需要通过临时test
变量为函数命名时,这种好处就消失了。它们也可能导致较少的内存占用,尽管这种差异可以忽略不计,但这种担忧可以忽略。
此外,如果将已命名的箭头函数编译到ES5,则其输出比常规函数 definitions 更为冗长:
const test = () => {}
被移植到
var test = function test() {}
可能是:
function test() {}
这与Node.js或其他ES6环境无关。
TL; DR:如果一个函数需要一个名称用于调试或其他目的,则可以使用:
module.exports = function test(id) {
console.log(id);
};
如果函数不需要名称,则为:
module.exports = id => {
console.log(id);
};
对于不使用特定于这些功能类型的功能的功能,这是正确的。