Эти два фрагмента не идентичны.Первый фрагмент приводит к анонимной функции, а второй - к именованной функции require('...').name === 'test'
(это может быть полезно для отладки).
Более подходящее сравнение -
module.exports = function test(id) {
console.log(id);
};
против
const test = id => {
console.log(id);
}
module.exports = test;
Нет никакой разницы между этими стрелкой и обычной функцией в таком случае, потому что они не используют специфичные для них функции (например, this
context).
Функция анонимной стрелки занимает меньшесимволы для ввода, но это преимущество исчезает, когда есть необходимость дать имя функции с помощью временной переменной test
.Они также могут привести к меньшей занимаемой памяти, хотя эту проблему можно игнорировать, поскольку разница незначительна.
Кроме того, именованные функции стрелок могут привести к более подробному выводу, чем обычные функции определения , если онипереносятся в ES5:
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);
};
Это верно для функций, которые не используют функции, специфичные для этих типов функций.