函数声明的这个ES6 syntax/style叫什么?

What is this ES6 syntax/style of function declaration called?

我试着查看 MDN on arrow functions, that links to an article ES6 In Depth: Arrow functions and the ECMAScript grammar。我没有找到这种函数体样式的例子。

参见下面示例代码中的 takeStockForBowl

请问,这种风格的函数定义应该叫什么?

也许这是对更基本的 JavaScript 语法的再利用,但我只是看不到它。抱歉,如果很明显。

const takeStockForBowl = bowl => ( // open paren
  takeForBowl('protein', bowl),    // side effect 1
  takeForBowl('grain', bowl),      // side effect 2
  takeForBowl('veg', bowl),        // ...
  bowl.supplied = true,            // side effect n
  bowl                             // result
)                                  // close paren

首先,takeStockForBowl真的很难读

要了解这里发生的事情,我们需要了解两件事:

作者这里基本上是避免写成下面的:

  • 显式 return 语句
  • 函数体的花括号

利用(或滥用)implicit return in arrow function 和逗号运算符。

逗号运算符的作用是从左到右评估其每个操作数,returns 最后一个操作数的值,在本例中为 bowl.

此函数的更具可读性的版本是:

const takeStockForBowl = bowl => {
  takeForBowl('protein', bowl);
  takeForBowl('grain', bowl);
  takeForBowl('veg', bowl);
  
  bowl.supplied = true;
  
  return bowl;                
}