Javascript 创建副本后,阵列会发生什么情况?
例如,当您在下划线中使用函数并返回“数组的副本”时,原始数组会发生什么情况 在清除浏览器缓存之前(假设没有永久会话),它是否会一直保留在内存中 创建副本时,是否有好的javascript“最佳实践”方法可供遵循。我想知道复印件是否引用了原件,换句话说,是否需要保留原件 为了上下文使用:Javascript 创建副本后,阵列会发生什么情况?,javascript,arrays,Javascript,Arrays,例如,当您在下划线中使用函数并返回“数组的副本”时,原始数组会发生什么情况 在清除浏览器缓存之前(假设没有永久会话),它是否会一直保留在内存中 创建副本时,是否有好的javascript“最佳实践”方法可供遵循。我想知道复印件是否引用了原件,换句话说,是否需要保留原件 为了上下文使用: without_.without(array, *values) Returns a copy of the array with all instances of the values removed.
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)的方式进行收集
有关更多详细信息,请参阅
至于这是否是一个好主意,则取决于性能对应用程序的重要性。对于大多数应用程序来说,这没有多大区别。就个人而言,我更喜欢创建对象的副本,而不是破坏性的更新,这是一种获得不变性的方法,从而使我更容易对我的程序进行推理
但是,如果您正在编写一个执行计算开销很大的任务的库,那么避免复制和更新内存中的对象可能会提高性能
让基准(而不是)最终做出决定。感谢您的详细回复,并让我进一步阅读。这很有帮助