【问题标题】:Arrow function with multiple statements in one line一行中有多个语句的箭头函数
【发布时间】:2020-08-17 18:22:19
【问题描述】:

最近发现了一个简单的箭头函数,例如这个地图中的回调

[1, 2, 3, 4, 5, 6].map(item => {
    console.log(item) // or anything else
    return item - 1;
})

我可以像这样重写一行命令

[1, 2, 3, 4, 5, 6].map(item => (console.log(item), item - 1))

我可以使用, 划分的尽可能多的语句,最后一个参数将始终是返回值。它对我来说看起来很酷,但在箭头函数文档中找不到关于这种语法的任何内容。任何人都可以解释这种语法或只是指出我找到文档的地方吗?

【问题讨论】:

  • Comma Operator。但请不要真的这样做。只有缩小器才能输出不可读的东西。
  • @PatrickRoberts 当然,我没想到它只是逗号运算符 :)

标签: javascript ecmascript-6 arrow-functions


【解决方案1】:

本质上,它允许您在单个语句中执行多个操作。它通常用于 for 循环并在单个语句中分配多个变量,例如:var a = 1, b = 2;

仅仅因为它有效,并不意味着它是一个好主意。它会降低您的代码的可读性和调试难度。

请参阅 the Comma Operator 上的 MDN 文档。

逗号运算符 (,) 计算其每个操作数(从左到右)并返回最后一个操作数的值。这使您可以创建一个复合表达式,在其中计算多个表达式,复合表达式的最终值是其最右边的成员表达式的值。这通常用于为 for 循环提供多个参数。

【讨论】:

  • 当然这不是个好主意 :) 我只是从未见过以这种方式使用逗号运算符,所以我有点困惑
  • “它通常用于......在单个语句中分配多个变量” 这在技术上是错误的。 declaration statement 中的 , 标记不是 comma operator,它们实际上是在语法的两个不同部分中分别定义的。
【解决方案2】:

您正在使用逗号运算符来评估多个表达式: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator

【讨论】:

    猜你喜欢
    • 2020-10-30
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2020-11-30
    • 2017-10-14
    • 2023-02-22
    相关资源
    最近更新 更多