JavaScript箭头函数

3
我看到一些类似这样的代码:

我看到一些类似这样的代码:

function printErr(err) {
    console.error(err)
}
request.on('error', err => printErr)

这是怎么工作的?我花了几个小时试图理解它并在各处搜索。我知道printErr是一个带有函数的对象,但是是什么机制让它将err参数放入函数并调用它呢?

我的想法是:

function foo(callback){
    callback()
}

request.on('error', err => foo)

但它如何获得参数?

4
这段代码本应该无法正常工作。通常,.on需要一个函数作为参数,但它的返回值会被忽略;而err => printErr是一个函数,它只会返回另一个函数。因此,在这里没有任何会执行printErr的机会。您确定您正确地复制了示例吗?能否提供您看到这个示例的来源链接? - Amadan
你是正确的。我认为这只是代码中的一个错误。我确实正确地复制了示例。 - radioman
2个回答

0

一开始我很困惑,但后来发现是因为我分析的代码有误。

简而言之

function print(data) {
    console.log(data)
}

const foo = [1,2,3,4]

foo.forEach(x => print) // will not print and just return undefined.
foo.forEach(x => print(x)) // will print correctly

1
请注意,foo.forEach(print) 也可以正常工作。 - Amadan

0
这是箭头函数的简写。每当只有一个参数时,我们可以甚至不用括号来调用它,而“=>”代表“返回”。当只有一行“return”时,我们可以明确地使用“=>”来返回,而不是使用“return”。

var a=e=>"hey";
console.log(a())

这与上面相同

var a=(e)=>{return "hey"};
console.log(a())


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接