箭头功能/gh> 逗号操作符
我试着看看MDN上的箭头函数,链接到一篇文章ES6深度:箭头函数和ECMAScript语法。我没有找到这种风格的函数体的例子。
参见下面示例代码中的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
真的很难读。
要理解这里发生了什么,我们需要理解两件事:
<<ul>作者在这里所做的基本上是避免写以下内容:
- 显式返回语句
- 函数体的花括号
利用(或滥用)箭头函数中的隐式返回和逗号操作符。
逗号操作符的作用是从左到右计算每个操作数,并返回最后一个操作数的值,在本例中是bowl
。
这个函数的更容易读的版本是:
const takeStockForBowl = bowl => {
takeForBowl('protein', bowl);
takeForBowl('grain', bowl);
takeForBowl('veg', bowl);
bowl.supplied = true;
return bowl;
}