何时应在 ES6 箭头函数中使用 return 语句
2022-08-30 01:26:52
杰克逊在一个类似的问题中部分回答了这个问题:
隐式返回,但前提是没有块。
- 当单行扩展到多行并且程序员忘记添加 .
return
- 隐式返回在语法上是不明确的。返回对象 ...右?错。它将返回 。这些大括号是一个显式块。 是一个标签。
(name) => {id: name}
{id: name}
undefined
id:
我会添加块的定义:
块语句(或其他语言中的复合语句)用于对零个或多个语句进行分组。该块由一对大括号分隔。
示例:
// returns: undefined
// explanation: an empty block with an implicit return
((name) => {})()
// returns: 'Hi Jess'
// explanation: no block means implicit return
((name) => 'Hi ' + name)('Jess')
// returns: undefined
// explanation: explicit return required inside block, but is missing.
((name) => {'Hi ' + name})('Jess')
// returns: 'Hi Jess'
// explanation: explicit return in block exists
((name) => {return 'Hi ' + name})('Jess')
// returns: undefined
// explanation: a block containing a single label. No explicit return.
// more: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
((name) => {id: name})('Jess')
// returns: {id: 'Jess'}
// explanation: implicit return of expression ( ) which evaluates to an object
((name) => ({id: name}))('Jess')
// returns: {id: 'Jess'}
// explanation: explicit return inside block returns object
((name) => {return {id: name}})('Jess')
我理解这个经验法则...
对于有效转换的函数(参数的单行操作),return 是隐式的。
候选人是:
// square-root
value => Math.sqrt(value)
// sum
(a,b) => a+b
对于其他操作(需要块的多个单行,返回必须是显式的