2017-09-20 92 views
1

返回箭頭函數中的值與添加正文並鍵入返回值有什麼區別?箭頭函數體與返回值。 ()=> {return value;} vs.()=> value;

據我所知他們是一樣的。

這裏有一個會話:

let a =() => 1; 
a() 
1 
let b =() => { return 1; } 
b() 
1 
a 
() => 1 
b 
() => { return 1; } 

是否有當這些不同的任何情況?

+7

是的,他們是一樣的。 –

+1

與{}你可以使身體多線,沒有其他區別 – juvian

+0

相關:[箭頭函數沒有花括號](https://stackoverflow.com/questions/39629962/arrow-function-without-curly-braces),[捲曲括號在箭頭函數](https://stackoverflow.com/questions/35440265/curly-brackets-in-arrow-functions),[ES6箭頭功能括號](https://stackoverflow.com/questions/38730747/es6-箭頭功能與括號) – trincot

回答

1

簡潔的主體箭頭函數隱式返回值,而對於多行箭頭函數,您必須顯式返回值。

在你的情況都將有同樣的最終結果

+0

在您回答之前,請直接說出您的術語。 「胖箭」這個詞已經有好幾年沒有使用過了。另外,它不是「單線」;它是一個「簡潔的身體」。 –

+0

@torazaburo你怎麼知道術語「胖箭頭」多年沒有使用過?你有什麼指標嗎?相同的「單行」 – alt255

+0

這很難證明一個否定。請在規範或MDN中查找術語「胖箭頭」的引用。非'{}'形式的技術術語非常清楚:它是「簡潔的身體」。一個簡潔的主體可以是多行,如'()=> 1 +(NEWLINE)2'。 –

2

一個區別是,返回使用隱式返回語法對象文字要求的對象文本被包裹在括號中。

var foo =() => { bar: "foobar" }; //This function returns undefined 
var foo =() => { return { bar: "foobar" }; }; //This function returns an object 
var foo =() => ({ bar: "foobar" }); //This function returns object 

據我所知,這是唯一的區別。

+0

不知道這是爲什麼我正在經歷一些事情......在過濾方法期間...這不起作用:.filter(x => {x =='a'})但是這個DID工作.filter(x => x =='a')。這是否與你所說的有關? – carinlynchin

相關問題