重新初始化javascript数组的代价是否足以添加检查条件?

重新初始化javascript数组的代价是否足以添加检查条件?,javascript,Javascript,我有一个例子,javascript数组可能会被重复初始化,即使它已经被重新初始化。我所说的初始化是指: arr = []; 在大多数情况下,阵列已为空,因此无需执行此步骤。这样做是否有任何成本可以证明围绕它包装一个条件是合理的 if (arr.length > 0) { arr = []; } 我还可以设置一个标志来指示数组的状态,但是我需要保持这个标志的状态 顺便说一下,这是在一个角度应用程序中,包含它的函数可以在摘要循环中重复调用。我可能会重新考虑整体方法,但我仍然好奇,

我有一个例子,javascript数组可能会被重复初始化,即使它已经被重新初始化。我所说的初始化是指:

arr = [];
在大多数情况下,阵列已为空,因此无需执行此步骤。这样做是否有任何成本可以证明围绕它包装一个条件是合理的

if (arr.length > 0) { 
    arr = [];
}
我还可以设置一个标志来指示数组的状态,但是我需要保持这个标志的状态


顺便说一下,这是在一个角度应用程序中,包含它的函数可以在摘要循环中重复调用。我可能会重新考虑整体方法,但我仍然好奇,如果在空的情况下重新初始化一个数组实际上是免费的。

在开始优化之前,您需要对代码进行基准测试。这可能根本不是问题,也可能不是,因为您没有初始化任何东西

arr=[]
表达式对现有数组不做任何处理(它根本不清空数组中的项或修改它),它只是将一个空数组分配给
arr
。作业很便宜

根据您的代码和运行时(优化器),
[]
表达式可能需要每次分配一个新的空数组。这将比分配更昂贵,但通常不认为速度慢,并且可能比清空现有阵列更快。您需要在做出决定之前对其进行基准测试


请注意,您还没有接触到旧阵列,因此它仍然在某个地方。清空现有阵列与创建新阵列将有非常不同的内存行为,这比创建新阵列对象的CPU成本更可能导致问题。

为什么不对其进行基准测试以找出原因?答案完全取决于你的具体情况。(顺便说一句,没有什么是免费的)你可以测试的另一个选项是设置
arr.length=0
,而不是创建一个新的:@JosiahKeller设置数组的长度可能会变得很奇怪,这通常是你可以避免的。@johnyrose-一个有趣的相关讨论的好链接。