什么时候应该在es6箭头函数中使用`return`?
新的es6箭头函数表示在某些情况下return
是隐含的:
该expression式也是该函数的隐式返回值。
在哪些情况下,我需要使用es6箭头函数return
?
jackson在一个类似的问题上已经部分回答了这个问题
隐式返回,但只有在没有块的情况下。
- 当一行代码扩展到多行时,这会导致错误,程序员忘记添加
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')
我明白这个经验法则…
对于有效转换的函数(参数的单行操作),返回是隐含的。
考生是:
// square-root value => Math.sqrt(value) // sum (a,b) => a+b
对于其他操作(多个需要块的单行,返回必须是明确的