【问题标题】:JavaScript arrow functionsJavaScript 箭头函数
【发布时间】:2019-06-16 16:56:36
【问题描述】:

我见过一些类似这样的代码:

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

它是如何工作的?我花了几个小时试图弄清楚并到处寻找它。我知道 printErr 是一个带有正在返回的函数的对象,但是让它将 err 参数放入函数并调用它的机制是什么?

我的想法是:

function foo(callback){
    callback()
}

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

但是它是如何得到参数的呢?

【问题讨论】:

  • 它应该不起作用。 .on 通常需要一个函数,其返回值被忽略; err => printErr 是一个只返回另一个函数的函数。那里没有任何东西可以运行printErr。您确定您正确复制了示例吗?你能链接到你看到它的来源吗?
  • 你是对的。我认为这只是代码中的错误。我确实正确复制了示例。

标签: javascript lambda callback anonymous-function arrow-functions


【解决方案1】:

这是箭头函数的简写。只要只有one argument,即使没有parentheses,我们也可以调用它,=> 代表return。当只有一行 return 时,我们可以显式使用 => 来返回而不是使用 return。

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

和上面的一样

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

【讨论】:

    【解决方案2】:

    一开始我很困惑,但这是因为我分析的代码是错误的。

    简化

    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
    

    【讨论】:

    • 请注意,foo.forEach(print) 也可以使用。
    猜你喜欢
    • 2019-01-06
    • 2017-04-18
    • 2019-10-21
    • 2022-01-21
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    相关资源
    最近更新 更多