node.js: 导出普通函数还是箭头函数?
node.js: export a normal function or arrow function?
我正在尝试使用普通函数或箭头函数在 .js 文件中导出一个函数。但是我不明白推荐哪个。
导出正常函数
module.exports = function(id) {
console.log(id);
};
导出箭头函数
const test = id => {
console.log(id);
}
module.exports = test;
以下是我心中的几个问题。
如果建议使用普通函数而不是箭头函数,那为什么我
不推荐使用箭头函数。
如果建议使用箭头函数而不是普通函数,那么为什么不推荐我使用普通函数。
如何理解推荐的,尤其是导出函数这种场景?
这两个片段并不相同。第一个片段产生匿名函数,而第二个片段产生命名函数,require('...').name === 'test'
(这可能对调试有用)。
比较合适的比较是
module.exports = function test(id) {
console.log(id);
};
对
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);
};
对于不使用特定于这些函数类型的功能的函数,这是正确的。
我正在尝试使用普通函数或箭头函数在 .js 文件中导出一个函数。但是我不明白推荐哪个。
导出正常函数
module.exports = function(id) {
console.log(id);
};
导出箭头函数
const test = id => {
console.log(id);
}
module.exports = test;
以下是我心中的几个问题。
如果建议使用普通函数而不是箭头函数,那为什么我 不推荐使用箭头函数。
如果建议使用箭头函数而不是普通函数,那么为什么不推荐我使用普通函数。
如何理解推荐的,尤其是导出函数这种场景?
这两个片段并不相同。第一个片段产生匿名函数,而第二个片段产生命名函数,require('...').name === 'test'
(这可能对调试有用)。
比较合适的比较是
module.exports = function test(id) {
console.log(id);
};
对
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);
};
对于不使用特定于这些函数类型的功能的函数,这是正确的。