2016-08-01 42 views
0

示例代碼與實際結果和瀏覽器版本(用戶代理):爲什麼JavaScript在第一次迭代之後會減少函數更改參數?

> [{count:1},{count:2},{count:3}].reduce(function(prev,curr){console.log(arguments);return 5;}) 
[Object, Object, 1, Array[3]] 
[5, Object, 2, Array[3]] 
5 
> navigator.appVersion 
"5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" 

示例代碼與預期結果:

-> [{count:1},{count:2},{count:3}].reduce(function(prev,curr){console.log(arguments);return 5;}) 
[0, Object, 0, Array[3]] 
[5, Object, 1, Array[3]] 
[5, Object, 2, Array[3]] 
5 

MDN鏈接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce 另一個鏈接:https://danmartensen.svbtle.com/javascripts-map-reduce-and-filter#reduce_1

回答

0

啊,我錯過了人們對初始值函數的使用,讓它以一個數字開頭,而不是跳過一個迭代,因此不會導致第一個結果的類型不同於從我的例子數..

小的變化和實際效果的工作示例代碼:

-> [{count:1},{count:2},{count:3}].reduce(function(prev,curr){console.log(arguments);return 5;}, 0) 
[0, Object, 0, Array[3]] 
[5, Object, 1, Array[3]] 
[5, Object, 2, Array[3]] 
相關問題