Monday, May 20, 2024
171
rated 0 times [  172] [ 1]  / answers: 1 / hits: 106320  / 9 Years ago, thu, march 5, 2015, 12:00:00

The new ES6 arrow functions say return is implicit under some circumstances:



The expression is also the implicit return value of that function.



In what cases do I need to use return with ES6 arrow functions?


More From » ecmascript-6

 Answers
11

Jackson has partially answered this in a similar question:




Implicit return, but only if there is no block.




  • This will result in errors when a one-liner expands to multiple lines and the programmer forgets to add a return.

  • Implicit return is syntactically ambiguous. (name) => {id: name}returns the object {id: name}... right? Wrong. It returns undefined. Those braces are an explicit block. id: is a label.




I would add to this the definition of a block:




A block statement (or compound statement in other languages) is used to group zero or more statements. The block is delimited by a pair of curly brackets.




Examples:



// 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')

[#67552] Wednesday, March 4, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
yulisa

Total Points: 436
Total Questions: 102
Total Answers: 123

Location: Palau
Member since Tue, May 30, 2023
1 Year ago
;