2016-11-16 62 views
2

我在看這個代碼 - https://facebook.github.io/react-native/docs/network.html語法的脂肪箭頭功能(=>),使用或不使用{}身體周圍

return fetch('https://facebook.github.io/react-native/movies.json') 
     .then((response) => response.json()) 
     .then((responseJson) => { 
     return responseJson.movies; 
     }) 

從我瞭解.then((response) => response.json())什麼翻譯成:

.then(function(response) { 
    return response.json() 
} 

但我不明白這是什麼轉化爲?有在它

.then((responseJson) => { 
     return responseJson.movies; 
     }) 
+0

同樣的事情,但curlybraces – adeneo

+2

它可以讓你有一個以上的聲明。 –

+3

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions – code11

回答

0

如果您沒有用大括號包裝箭頭函數的主體,它將評估表達式並隱式返回結果。如果用大括號包裝它,結果不會隱式返回,您必須明確地執行此操作。

爲此,第二部分「等於」以下:

.then(function(responseJson) { 
    return responseJson.movies; 
}) 
0

(富)=> 'bar' 的一個額外的{};

不正是同樣的事情

(foo) => { 
    return 'bar'; 
}; 

如果你的功能多,使用第二種形式。

下面是一些文檔:MDN Arrow function

3

的脂肪箭頭功能的基本語法是:

(arg1, arg2, ...) => { ... } 

但是:

  1. 可以省略()周圍的參數列表,如果有正好一個參數:

    arg => { ... } 
    
  2. 可以省略{}函數體周圍,如果你只在體內單個語句,在這種情況下return也暗示:

    arg => arg.foo 
    // means: 
    (arg) => { return arg.foo; } 
    

由於形式function (arg) { return arg.prop; }的回調是非常在Javascript中很常見,這兩種語法的特殊情況使這種常見操作非常簡潔和表達。例如:

arr.filter(foo => foo.bar) 
相關問題