今天看到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
为什么会报这样的错?
谁能回答下这两个问题吗??感激不尽。百度谷歌了好久都找不到答案。。
胡子哥哥
相关分类