gpt4 book ai didi

javascript - 在javascript chrome控制台中使用push()方法的无限内部数组

转载 作者:行者123 更新时间:2023-12-03 16:26:29 25 4
gpt4 key购买 nike

最近我在试验数组 push() javascript中的方法。
我创建了一个数组,并使用 push 方法推送了相同的数组。

var a=['hello', 4]

a.push(a)


结果令人惊讶,当我在 chrome 控制台中探索数组项时,产生了无限数组。我想知道为什么会这样。作为 push()方法在最后添加元素。

我期待这个结果
['hello, 4, ['hello',4]]

但结果是别的东西,这是 chrome 控制台的屏幕截图
problem screenshot, infinite inner arrays using push method in JavaScript

最佳答案

当您将对象分配给 Javascript(实际上是在大多数类似语言中)中的变量时,该变量会保存对该对象的所谓“引用”。请注意,JS 中的数组是对象,但字符串和数字等原始值不是。

对象分配是“通过引用”的一个结果是,您对该对象所做的任何更改——即使它对碰巧引用同一对象的另一个变量所做的更改——将在您检查原始变量时“显示”。

所以在这里,你开始

var a=['hello', 4]

然后做
a.push(a)

然后是 a 的对象(数组)点数已更改。现在它的末尾多了一个元素 - a ,我们正在谈论的同一个数组。

所以它递归地展开:
a = ['hello', 4, a]
= ['hello', 4, ['hello', 4, a]]
= ['hello', 4, ['hello', 4, ['hello', 4, a]]]
...

以此类推,无穷无尽。这不需要无限量的内存,因为数组的第三个元素只是对保存数组的内存位置的引用。

关于javascript - 在javascript chrome控制台中使用push()方法的无限内部数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59847160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com