JavaScript箭头函数
我看到一些代码如下所示:JavaScript箭头函数,javascript,lambda,callback,anonymous-function,arrow-functions,Javascript,Lambda,Callback,Anonymous Function,Arrow Functions,我看到一些代码如下所示: function printErr(err) { console.error(err) } request.on('error', err => printErr) 这是怎么回事?我花了好几个小时想弄明白,到处找。我知道printErr是一个带有返回函数的对象,但是什么机制允许它将err参数放入函数并调用它呢 我的思路是: function foo(callback){ callback() } request.on('error', err
function printErr(err) {
console.error(err)
}
request.on('error', err => printErr)
这是怎么回事?我花了好几个小时想弄明白,到处找。我知道printErr是一个带有返回函数的对象,但是什么机制允许它将err参数放入函数并调用它呢
我的思路是:
function foo(callback){
callback()
}
request.on('error', err => foo)
但是它是如何获得参数的呢?这是arrow函数的简写。只要只有一个参数,我们就可以调用它,即使没有括号,
=>
表示返回值。当只有一行return
时,我们可以显式地使用=>
进行返回,而不是使用return
var a=e=>“嘿”;
log(a())
一开始我很困惑,但这是因为我分析的代码是错误的
简化
功能打印(数据){
console.log(数据)
}
常量foo=[1,2,3,4]
forEach(x=>print)//将不打印,只返回未定义的值。
foo.forEach(x=>print(x))//将正确打印
它不应该工作.on
通常需要一个函数,其返回值被忽略err=>printErr
是一个只返回另一个函数的函数。没有将在那里运行的printErr
。您确定复制的示例正确吗?你能链接到你看到它的来源吗?你是对的。我认为这只是代码中的一个错误。我确实正确地复制了这个示例。请注意,foo.forEach(print)
也可以工作。