提问人:Anthony Luo 提问时间:9/6/2023 最后编辑:Anthony Luo 更新时间:9/6/2023 访问量:47
在 JS 中,const newArray = oldArray.splice(0) 的结果是否包含执行过程中添加的元素?
In JS, does the result of const newArray = oldArray.splice(0) include elements added during execution?
问:
在我的 JavaScript 代码中,我有一行代码如下所示:
const newArray = oldArray.splice(0);
我的问题是,当在执行此行期间同时进行修改时会发生什么。具体说来:oldArray
- 如果在执行 splice(0) 时推入新元素,这些新元素是否会包含在 ?
oldArray
newArray
- 执行该行后,将清空,还是仍包含执行 splice(0) 期间添加的元素?
oldArray
并按以下方式进行比较:
const newArray = oldArray.slice();
oldArray = oldArray.slice(newArray.length);
哪种方式更好?
我的目标是,如果新元素添加到 中,我想将它们保留在 中,我不想丢失任何数据。oldArray
oldArray
我想确保我正确地理解行为并处理潜在的并发问题。谢谢你的帮助!
我不知道如何验证我的想法。
答:
1赞
DWORD
9/6/2023
#1
由于 JavaScript 是单线程的,因此不太可能同时对数组进行 2 次操作。 所以我看不出你提到的两种方法有什么区别。然而,变体与
const newArray = oldArray.slice();
oldArray = oldArray.slice(newArray.length);
对我来说听起来更好,因为你自己决定行为。
有关拼接和切片之间差异的更多信息,请查看此处 ;)
评论