Wednesday, August 1, 2018

javascript - ECMAScript 6 arrow function that returns an object



When returning an object from an arrow function, it seems that it is necessary to use an extra set of {} and a return keyword because of an ambiguity in the grammar.



That means I can’t write p => {foo: "bar"}, but have to write p => { return {foo: "bar"}; }.



If the arrow function returns anything other than an object, the {} and return are unnecessary, e.g.: p => "foo".



p => {foo: "bar"} returns undefined.




A modified p => {"foo": "bar"} throws SyntaxError: unexpected token: ':'”.



Is there something obvious I am missing?


Answer



You must wrap the returning object literal into parentheses. Otherwise curly braces will be considered to denote the function’s body. The following works:



p => ({ foo: 'bar' });


You don't need to wrap any other expression into parentheses:




p => 10;
p => 'foo';
p => true;
p => [1,2,3];
p => null;
p => /^foo$/;


and so on.




Reference: MDN - Returning object literals


No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...