Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript箭头函数_Javascript_Lambda_Callback_Anonymous Function_Arrow Functions - Fatal编程技术网

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)
也可以工作。