2011-10-28 93 views
3

我的代碼是:JavaScript中的{content:[Circular]}是什麼意思?

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

和它返回:

{ content: [Circular] } 

這是什麼意思?

+0

這不是javascript的一部分(Ecmascript) - chineseBox返回一個JSON對象,指定內容是圓形的(不管這意味着什麼對中文框) – mozillanerd

+0

它返回那麼怎麼樣?這裏缺少一些東西。 – BNL

+2

代碼的第二行將評估爲右鍵,即'chineseBox'。就像'chineseBox.content = 5'將同樣的方式評估爲'5'。 – Peter

回答

2

那是因爲chineseBox.content有一個對同一個對象的ChineseBox的引用。 A Circular reference ...

6

您的對象包含circular reference。如果你試圖打印(或序列化)這個對象,你會在一個無限循環結束

{content: {content: {content ... 

相反,你的系統是足夠聰明,圓度和保護自己反對。

+0

我對於什麼系統顯示輸出有點好奇。 – numbers1311407

+0

謝謝!和@ numbers1311407這實際上是我的終端看起來像:http://d.pr/nE8a –

+1

很酷,這將是Node.js;它使用V8引擎。 – Peter

4

這意味着你已經定義了一個循環引用。換句話說,一個引用自身的變量。

換句話說,chineseBox等於chineseBox.content等於chineseBox.content.content等於chineseBox.content.content.content等於chineseBox.content.content.content.content等於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]的結果。其他語言對於該術語具有自己的短語,例如顯示*RECURSION*的PHP。關於循環引用沒有什麼特別的世界末日,只是它們在大多數時間都是無用的。

來回引用(例如a.thing = b; b.thing = a;)可用於鏈接列表或其他鏈,您需要能夠向後導航和向前導航 - 再次,您可以將a.thing.thing.thing.thing.thing.thing編寫爲就像你想要的一樣。

+0

哇.......哈哈 – Peter

相關問題