今天看到javascript的函數式編程的一篇文章,講的是用reduce這個函數統計一個字符串中各字母出現的次數,代碼如下:`var res = str.split('').reduce((pre, cur) => (pre[cur]++ || (pre[cur] = 1), pre), {})`然后我不知道上式中箭頭函數的右邊部分中的pre是什么意思,箭頭函數右邊不就是要返回的表達式嗎,為什么上面上面的式子里面還多了個pre?然后我試著改寫了一下:var res = str.split('')
.reduce(function(pre,cur){ console.log(pre) ;
console.log(cur) ; if( pre[cur] === 1)
{
pre[cur]++;
} else
pre[cur] = 1;
}, {});結果報錯為:if( pre[cur] === 1)
^
TypeError: Cannot read property 'd' of undefined為什么會報這樣的錯?誰能回答下這兩個問題嗎??感激不盡。百度谷歌了好久都找不到答案。。
Javascript中的array.reduce的問題及一個奇怪的拋出異常
天涯盡頭無女友
2018-09-18 09:13:43