新的ES6 箭头函数sayreturn在某些情况下是隐含的:
return
该表达式也是该函数的隐式返回值。
在什么情况下我需要使用returnES6 箭头函数?
杰克逊在一个类似的问题中部分回答了这个问题:
隐式返回,但前提是没有阻塞。 当单行扩展为多行并且程序员忘记添加return. 隐式返回在语法上是模棱两可的。(name) => {id: name}返回对象{id: name}…对吗?错误的。它返回undefined。这些大括号是一个显式块。id:是一个标签。
隐式返回,但前提是没有阻塞。
(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')