在JS中,const newArray = oldArray.splice(0)的结果是否包含执行过程中添加的元素?

问题描述 投票:0回答:1

在我的 JavaScript 代码中,我有一行代码,如下所示:

const newArray = oldArray.splice(0);

我的问题是,在执行此行期间对

oldArray
进行并发修改时会发生什么。具体来说:

  1. 如果在执行 splice(0) 时将新元素推入
    oldArray
    中,这些新元素是否会包含在
    newArray
    中?
  2. 该行执行完毕后,
    oldArray
    会被清空,还是仍然包含执行splice(0)时添加的元素?

并与以下方式进行比较:

const newArray = oldArray.slice();
oldArray = oldArray.slice(newArray.length);

哪种方式更好?

我的目标是如果新元素添加到

oldArray
,我想将它们保留在
oldArray
中,我不想丢失任何数据。

我想确保我正确理解行为并处理潜在的并发问题。谢谢您的帮助!

我不知道如何验证我的想法。

javascript node.js concurrency slice splice
1个回答
0
投票

由于 javascript 是单线程的,因此不太可能同时对数组进行 2 个操作。 所以我不认为你提到的两种方法有什么区别。尽管如此,带有

的变体
const newArray = oldArray.slice();
oldArray = oldArray.slice(newArray.length);

对我来说听起来更好,因为你自己决定行为。

有关拼接和切片之间差异的更多信息,请查看此处;)

© www.soinside.com 2019 - 2024. All rights reserved.