map中使用箭頭函數遇到的坑


箭頭函數提供了更簡潔和更短的語法,其中一個可用功能是可以將函數編寫為具有隱式返回值的lambda表達式。這對於功能樣式代碼很方便,比如使用函數映射數組:

const numbers = [1,2,3,4]; 
numbers.map(n => n * n);

這個箭頭函數將按照預期的方式工作,它將值自身相乘並返回到包含的新數組[1, 4, 9, 16]

但是,如果你嘗試映射到對象,例如,假設將數字映射到包含如下值的對象數組:

const numbers = [1,2,3,4]; 
numbers.map(n => {value:n});

這里的結果實際上是一個包含未定義值的數組。雖然看起來我們在這里返回一個對象,但是解釋器看到了完全不同的東西。如果我們將上面的箭頭函數推斷為解釋器,實際上最終執行的內容像這樣:

numbers.map(function(n){ 
  value:
  n 
  return; 
});

解決方法就是將對象包裝在括號中,將其轉換為表達式而不是塊語句

numbers.map(n =>({value:n}));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM