调用空数组的`every`和`some`方法会返回奇怪的结果

时间:2017-01-26 18:45:31

标签: javascript

在JavaScript中为什么行[].every(Boolean)会返回true[].some(Boolean)会返回false吗?

如果数组中没有元素,那么它们是未定义的(未声明的),因此是假的。根据这一点,数组[null][undefined]的代码段完全按照预测返回false
但是任何空数组都不应该在第一个位置调用回调Boolean,并返回undefinednull之类的内容,从而再次返回false

我错过了什么?

看起来,JS解释器真正做的是Boolean([])(在第一种情况下)。那当然会返回true。也许这是正确的?

1 个答案:

答案 0 :(得分:0)

.every会自动返回true,而.some会自动返回false。无需循环,他们使用默认答案。