我的代码是:
var chineseBox = {};
chineseBox.content = chineseBox;
然后又回来了:
{ content: [Circular] }
这是什么意思?
答案 0 :(得分:13)
您的对象包含circular reference。如果您尝试打印(或序列化)此对象,则最终会进入无限循环
{content: {content: {content ...
相反,您的系统非常聪明,可以注意到循环并保护自己不受其影响。
答案 1 :(得分:5)
这意味着您已定义循环引用。换句话说,一个引用自身的变量。
换句话说,chineseBox
等于chineseBox.content
等于chineseBox.content.content
等于chineseBox.content.content.content
等于chineseBox.content.content.content.content
等于{{1} }}等于chineseBox.content.content.content.content.content
等于chineseBox.content.content.content.content.content.content
等于chineseBox.content.content.content.content.content.content.content
等于chineseBox.content.content.content.content.content.content.content.content
等于chineseBox.content.content.content.content.content.content.content.content.content
等于chineseBox.content.content.content.content.content.content.content.content.content.content
等于chineseBox.content.content.content.content.content.content.content.content.content.content.content
等于chineseBox.content.content.content.content.content.content.content.content.content.content.content.content
......等等无限期。
由于这样的循环引用很明显不能以任何有限的方式表达,因此显示了chineseBox.content.content.content.content.content.content.content.content.content.content.content.content.content
的结果。其他语言也有自己的术语,例如显示[Circular]
的PHP。对于循环引用没有什么特别的世界末日,只是在大多数时候它们都是无用的。
来回引用(例如*RECURSION*
)可能非常有用,可用于您需要能够向后和向前导航的链接列表或其他链中 - 再次,您可以尽可能多地写a.thing = b; b.thing = a;
。
答案 2 :(得分:2)
这是因为chineseBox.content对chineseBox的引用是同一个Object。 循环参考......