簡體   English   中英

地圖的粗箭頭用法

[英]Fat arrow usage with map

JavaScript新手在這里。 嘗試通過粗箭頭使用Arrray.map時,出現編譯錯誤。 以下是我的示例代碼以及錯誤。

 var employeesWithComplexLocation = [{ "name": "jon", "location": { "country": "usa", "city": "austin" } }, { "name": "jane", "location": { "country": "usa", "city": "houston" } }, { "name": "mary", "location": { "country": "usa", "city": "dallas" } }]; var employeesWithOnlyCity = employeesWithComplexLocation.map(function(element) { return { name: element.name, location: element.location.city }; }); console.log(employeesWithOnlyCity); console.log('Now using fat arrow:') employeesWithOnlyCity = employeesWithComplexLocation.map(e => { name: e.name, location: e.location.city }); console.log(employeesWithOnlyCity); 

Array.map與匿名函數一樣可以正常工作,但是當我使用粗箭頭時卻出現以下錯誤。

employeesWithOnlyCity = employeesWithComplexLocation.map(e => {
  name: e.name,
  location: e.location.city
});

SyntaxError: Unexpected token :

粗箭頭可以與Array.every或Array.filter一起使用。 不知道我在這里缺少Array.map

您的第二種用法引起錯誤的原因是,當使用javascript =>運算符{}表示函數體,而不是對象。 關於Arrow函數的MDN文章在此處提到了這一點並提供了指向更詳盡的解釋( 此處 )的鏈接,

ES6中的規則是{緊跟在箭頭之后始終被視為塊的起點,而不是對象的起點。

如果需要從箭頭函數返回對象,則應將該對象括在括號中,以使Javascript知道不要使用語句塊。

 var test = e => ({test: e}); document.getElementById("output").innerHTML = JSON.stringify(test("My Value")); 
 Value: <span id="output">...</span> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM