{content:[Circular]}在JavaScript中意味着什么?

时间:2011-10-28 00:26:41

标签: javascript

我的代码是:

var chineseBox = {};
chineseBox.content = chineseBox;

然后又回来了:

{ content: [Circular] }

这是什么意思?

3 个答案:

答案 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。 循环参考......