gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:11:46 25 4
gpt4 key购买 nike

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

如果数组中没有元素,那么它们是未定义的(未声明的),因此是假的。据此,带有数组的片段 [null][undefined] ,返回false完全符合预期。
但任何空数组都不应该调用回调 Boolean首先,返回类似 undefined 的内容或null ,因此false再次。

我错过了什么?

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

最佳答案

如果数组的每个元素都通过测试,则“every”返回 true。如果数组中没有项目,则数组中的“每个”元素都通过测试。

如果数组中至少有一个元素通过测试,则“some”返回 true。如果数组为空,则没有元素通过测试,返回 false。

It looks like, what JS interpreter really does is that Boolean([]) (in the first situation). And that of course returns true. Maybe that is correct?

对于空数组,everysome 都不会调用回调,因为没有任何东西可以测试。您可以通过以下方式检查:

[].every(() => console.log("this never prints"));
[].some(() => console.log("this never prints"));

关于javascript - 调用空数组的 `every` 和 `some` 方法会返回奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41880718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com