在使用Javascript中的单个元素的数组上调用Array.reduce

调用reduce数组抛出TypeError ,这是完全可以理解的,并有助于捕获错误。 但是当我用一个单独的项目在一个数组上调用它时,行为会让我困惑:

var arr = ["a"];
arr.reduce(function(a,b){
   return [a,b]
}); //returns "a"

我知道reduce并不意味着在这样的数组上使用,但我发现只返回元素而不调用回调或抛出错误至少是奇怪的。

此外,MDN文档指出回调是一个“在数组中的每个值上执行的函数,取四个参数:”。

有人能解释这种行为的原因吗?


回调被认为是一个“二元函数”(即一个接受两个参数操作,另外两个参数保存currentIndex和原始array )。

如果只提供了一个元素,则会将未定义的值传递给currentValuepreviousValue的回调函数,这可能会导致运行时错误。

因此,设计假定只给定一个值(无论是空数组, initialValue还是带有一个值且没有initialValue的数组),最好不要调用回调。

链接地址: http://www.djcxy.com/p/74153.html

上一篇: Calling Array.reduce on an array with a single element in Javascript

下一篇: Are HTMLCollection and NodeList iterables?