Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建副本后,阵列会发生什么情况?_Javascript_Arrays - Fatal编程技术网

Javascript 创建副本后,阵列会发生什么情况?

Javascript 创建副本后,阵列会发生什么情况?,javascript,arrays,Javascript,Arrays,例如,当您在下划线中使用函数并返回“数组的副本”时,原始数组会发生什么情况 在清除浏览器缓存之前(假设没有永久会话),它是否会一直保留在内存中 创建副本时,是否有好的javascript“最佳实践”方法可供遵循。我想知道复印件是否引用了原件,换句话说,是否需要保留原件 为了上下文使用: without_.without(array, *values) Returns a copy of the array with all instances of the values removed.

例如,当您在下划线中使用函数并返回“数组的副本”时,原始数组会发生什么情况

在清除浏览器缓存之前(假设没有永久会话),它是否会一直保留在内存中

创建副本时,是否有好的javascript“最佳实践”方法可供遵循。我想知道复印件是否引用了原件,换句话说,是否需要保留原件

为了上下文使用:

without_.without(array, *values) 

Returns a copy of the array with all instances of the values removed.

_.without([1, 2, 1, 0, 3, 1, 4], 0, 1);
=> [2, 3, 4]

与C/C++不同,Javascript为程序员进行内存管理。因此,程序无法以任何方式访问的所有变量(例如,作为参数传递给
\的数组,不带
)最终将由程序收集。收集发生的确切时间取决于Javascript引擎的底层实现,例如V8(Chrome)可能会以不同于SpiderMonkey(Firefox)的方式进行收集

有关更多详细信息,请参阅


至于这是否是一个好主意,则取决于性能对应用程序的重要性。对于大多数应用程序来说,这没有多大区别。就个人而言,我更喜欢创建对象的副本,而不是破坏性的更新,这是一种获得不变性的方法,从而使我更容易对我的程序进行推理

但是,如果您正在编写一个执行计算开销很大的任务的库,那么避免复制和更新内存中的对象可能会提高性能


让基准(而不是)最终做出决定。

感谢您的详细回复,并让我进一步阅读。这很有帮助