gpt4 book ai didi

javascript - 具有惰性评估的自引用数组

转载 作者:行者123 更新时间:2023-11-29 15:33:21 24 4
gpt4 key购买 nike

我在玩 JavaScript 数组时,不小心将一个数组推给了它自己。数组并没有因溢出异常而中断,而是懒洋洋地插入了对自身的引用,直到无限。在以下操作中:

x = [], x.push(x)

我相信,将以递归方式插入对自身的引用,但不会中断运行时。它将生成无限表示:

enter image description here

并且浏览器永远不会卡住或中断,可能是因为该值在单击时被“评估”。

  • 为什么会这样?
  • V8 如何处理循环引用?
  • 它在现实世界的编程中有什么用处吗?

提前致谢。

最佳答案

  • 为什么会这样?

虽然图形表示可能显示无限的“数组”,但实际上您有一个递归数组,因此,您在内存中只有一个 first 元素包含一个数组(但只是指向一个的指针)。如果您将第二个成员添加到第一个数组,那么所有成员现在都应该显示相同的成员,因为它们是相同的。

  • V8 如何处理循环引用?

我不知道它是否可以...但我知道 javascript 允许您编写毫无意义的代码。

  • 它在现实世界的编程中有什么用处吗?

虽然“集合”表示的概念看起来不切实际,但您可以:

  1. 只包含自己的集合。
  2. 包含所有不包含任何内容的集合的集合(仅当所有其他集合包含其他内容时才填充自己)。
  3. 包含当前包含的集合的集合。

这些可以用于诸如分组控件之类的东西......

总的来说,自引用通常是“不合逻辑的”,主要是因为在计算机中你已经有一个变量的引用(因此不需要额外的自引用)并且通常人们组织他们的程序来促进某些事情......要么减少操作,要么维护或他们喜欢的东西。

关于javascript - 具有惰性评估的自引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32278662/

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