我喜欢探索 JavaScript 的局限性,想知道是否可以在最后一个表达式为 return 语句的地方使用箭头函数。
幸运的是这是可能的,但在同一范围内设置变量有一些缺点。
[1,2,3,4,5].reduce((sum, element) => (const doubleSum=sum+sum, doubleSum+element));
这返回未识别的标识符(指的是doubleSum)
解决办法就是这样写
let doubleSum;
[1,2,3,4,5].reduce((sum, element) => (doubleSum=sum+sum, doubleSum+element));
所以现在没有 curly backet 我可以通过在函数中包含两个表达式来获得 sum+sum+element
的总和。这不是一个很好的示例用法,但它展示了如何在没有大括号的情况下使用 2 个表达式。
结果将是 57
,因为它每次迭代只返回 doubleSum+element
。如果您想将其拆分为更具可读性的部分,这将非常适合计算。
另一个例子是记录每次迭代的结果而不必使用大括号
[1,2,3,4,5].reduce((sum, element) => (console.log(sum), sum+sum+element));
//1
//4
//11
//26
//57
我真的很喜欢这种语法,但我想知道这是否是一种不好的做法,因为 Arrow functions 上没有提到它
最佳答案
I wonder if it is bad practice
是的,在数组函数范围之外声明 doubleSum
绝对是一种不好的做法。不要那样做。
Another example is to use
console.log
without curly brackets. I really like this syntax, but it isn't mentioned on Arrow functions
是的,那是因为它不是特定于箭头函数的。你只是在使用 grouping syntax和 comma operator这里。一些类似的用法可以在 Processing and then returning usage example 中找到那里。
关于javascript - 箭头函数中多个表达式不带花括号的做法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48973691/