首页新闻招聘找找看知识库

Javascript代码的小小疑问(10.12)

0
[已解决问题]
/*
这段代码网上摘抄,
说结果是:1,3,6,10,
这是我在控制台实验,结果不一样,
Why?
*/



[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array){
  return previousValue + currentValue;
});

Coca-code的主页 Coca-code | 初学一级 | 园豆:14
提问于:2017-10-12 22:20
< >
分享
最佳答案
0

老铁  

第一次 运算是 0 + 1 但是因为你没有返回 return  导致

第二次运算是  undefined + 2 结果为NaN 

第三次 继续因为没有return  表达式为  undefined + 3 结果为NaN

....

最后一次  没有return 导致默认返回undefined reduce 返回为undefined  没毛病

奖励园豆:5
blurs | 菜鸟二级 |园豆:230 | 2017-10-13 09:27
[0,1,2,3,4].reduce(function(a,b){
return a+b
console.log(a+b);  //undefined
}) 

一个函数有入口(参数),出口(return),为何console.log();在return前?  不应该是先return出来,我再将它console出来吗?  

Coca-code | 园豆:14 (初学一级) | 2017-10-13 10:17

放return前就ok

Coca-code | 园豆:14 (初学一级) | 2017-10-13 10:19

@Coca-code: 看来不需要回答了。。  加油!~~~ QAQ  老铁 程序员之路 任重而道远!~~

blurs | 园豆:230 (菜鸟二级) | 2017-10-13 10:20

@blurs: 其实我是迷惑的

Coca-code | 园豆:14 (初学一级) | 2017-10-13 18:28
其他回答(1)
0

因为你的回调函数中参数的第一个值是累加的返回值,你箭头函数 没有把值返回出来

 [0,1,2,3,4].reduce(function(a,b){console.log(a+b);return a+b}) 

屈老湿 | 园豆:202 (菜鸟二级) | 2017-10-12 23:57

一个函数有入口(参数),出口(return),为何console.log();在return前?  不应该是先return出来,我再将它console出来吗?  

[0,1,2,3,4].reduce(function(a,b){
return a+b
console.log(a+b);  //undefined
}) 
Coca-code | 园豆:14 (初学一级) | 2017-10-13 10:16
   您需要登录以后才能回答,未注册用户请先注册