我甚至不知道该怎么称呼它,所以不知道如何正确地提出问题。什么是运营商,它在做什么?我假设它只是传递一个函数表达式作为回调,但语法对我来说是新的。Javascript语法。这是什么:“,(err)=> {}”?
(ERR)=>
fs.writeFile('message.txt', 'Hello Node.js', (err) => {
if (err) throw err;
console.log('It\'s saved!');
});
我甚至不知道该怎么称呼它,所以不知道如何正确地提出问题。什么是运营商,它在做什么?我假设它只是传递一个函数表达式作为回调,但语法对我来说是新的。Javascript语法。这是什么:“,(err)=> {}”?
(ERR)=>
fs.writeFile('message.txt', 'Hello Node.js', (err) => {
if (err) throw err;
console.log('It\'s saved!');
});
这是一个所谓的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!');
});
无论如何,这只是工作,如果只有一个参数。
这是ES6的箭头功能(或λ)的语法。退房this MDN article。
确实是一个回调函数,它将接受名为err
的参数。
在你的情况下,它是语义上等效于以下内容:
function(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)' –