Это так называемый arrow function. Это краткая форма для определения выражений функций. Следовательно,
fs.writeFile('message.txt', 'Hello Node.js', (err) => {
if (err) throw err;
console.log('It\'s saved!');
});
в основном аналогичен:
fs.writeFile('message.txt', 'Hello Node.js', function (err) {
if (err) throw err;
console.log('It\'s saved!');
});
Во всяком случае, есть большая разница bitween синтаксических: В то время как function
создает новую область для this
, функция стрелки повторно использует внешнюю сферу. Таким образом, в функции обратного вызова, определенном с помощью ключевого слова function
вам может понадобиться что-то такое, как
const that = this;
сохранить внешнюю сферу, используя функцию стрелков не нужно. Обратите внимание, что это также означает, что вы не можете использовать bind
со стрелкой (т. Е. Невозможно переопределить this
для функции стрелки (хорошо, правда, вы можете использовать, но первый параметр выиграл не имеет никакого эффекта)).
Кроме того, обратите внимание, что вы можете опустить круглые скобки вокруг параметра, если есть только один. Таким образом, вместо
fs.writeFile('message.txt', 'Hello Node.js', (err) => {
if (err) throw err;
console.log('It\'s saved!');
});
вы также можете написать:
fs.writeFile('message.txt', 'Hello Node.js', err => {
if (err) throw err;
console.log('It\'s saved!');
});
Во всяком случае, это работает только, если есть только один параметр.
ES5 новая функция стрелка синтаксиса проверить его здесь https://babeljs.io/repl/ –
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Arrow_functions – Sirko
Вы также можете опустить скобки о 'err':' err => console.error (err) ' –