/* 这段代码网上摘抄, 说结果是:1,3,6,10, 这是我在控制台实验,结果不一样, Why? */ [0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array){ return previousValue + currentValue; });
老铁
第一次 运算是 0 + 1 但是因为你没有返回 return 导致
第二次运算是 undefined + 2 结果为NaN
第三次 继续因为没有return 表达式为 undefined + 3 结果为NaN
....
最后一次 没有return 导致默认返回undefined reduce 返回为undefined 没毛病
[0,1,2,3,4].reduce(function(a,b){ return a+b console.log(a+b); //undefined })
一个函数有入口(参数),出口(return),为何console.log();在return前? 不应该是先return出来,我再将它console出来吗?
放return前就ok
@Coca-code: 看来不需要回答了。。 加油!~~~ QAQ 老铁 程序员之路 任重而道远!~~
@blurs: 其实我是迷惑的
因为你的回调函数中参数的第一个值是累加的返回值,你箭头函数 没有把值返回出来
[0,1,2,3,4].reduce(function(a,b){console.log(a+b);return a+b})
一个函数有入口(参数),出口(return),为何console.log();在return前? 不应该是先return出来,我再将它console出来吗?
[0,1,2,3,4].reduce(function(a,b){ return a+b console.log(a+b); //undefined })