【发布时间】:2013-07-07 03:30:38
【问题描述】:
http://jsperf.com/testing-for-empty-array
我想知道在 JavaScript 中测试空数组的最佳方法是什么,并发现了一些奇怪的结果。据我所知,你永远不应该使用:
if (arr == true)
// do stuff
我认为与以下内容相同的解释:
if (arr)
// do stuff
使用arr == true 速度明显变慢有什么原因吗?
【问题讨论】:
-
不是 arr.length !== 0 更快吗?
-
arr == true不是总是假的吗?是否为空? -
但它不应该在
if (arr)案例中进行相同的测试吗? -
@RyanAllred - 数组的第一个元素可以是值
undefined。 JavaScript 不必遍历数组来确定其长度。请注意,如果arr是一个数组,则if(arr)将始终为true,无论是否为空。您需要测试arr.length(也可能使用Array.isArray(arr))来测试arr是否为空数组。 -
@RyanAllred 不要依赖这样的基准。 jsperf 确保浏览器不在这里使用他们的优化编译器,如果你需要性能,你将在你的应用程序中使用优化编译器。那么在数组中存储不同的东西时性能结果可能会有所不同(比如小可以优化的整数),或者数组是否为空。最好的方法是只使用 !a.length 或 a.lent`,然后如果您分析并发现您需要优化该位,如果它对您的应用程序有显着改进,您可以用其他东西替换它。
标签: javascript arrays performance