在我的 JavaScript 代码中,我有一行代码,如下所示:
const newArray = oldArray.splice(0);
我的问题是,在执行此行期间对
oldArray
进行并发修改时会发生什么。具体来说:
oldArray
中,这些新元素是否会包含在 newArray
中?oldArray
会被清空,还是仍然包含执行splice(0)时添加的元素?并与以下方式进行比较:
const newArray = oldArray.slice();
oldArray = oldArray.slice(newArray.length);
哪种方式更好?
我的目标是如果新元素添加到
oldArray
,我想将它们保留在oldArray
中,我不想丢失任何数据。
我想确保我正确理解行为并处理潜在的并发问题。谢谢您的帮助!
我不知道如何验证我的想法。
由于 javascript 是单线程的,因此不太可能同时对数组进行 2 个操作。 所以我不认为你提到的两种方法有什么区别。尽管如此,带有
的变体const newArray = oldArray.slice();
oldArray = oldArray.slice(newArray.length);
对我来说听起来更好,因为你自己决定行为。
有关拼接和切片之间差异的更多信息,请查看此处;)