2011-10-28 7 views
3

私のコードはでした:{content:[Circular]}はJavaScriptの意味は何ですか?

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

、それが返さ:

{ content: [Circular] } 

それはどういう意味しますか?

+0

これはjavascript(Ecmascript)の一部ではありません - chineseBoxは、内容がCircular(chineseBoxの意味であれば何でも)を指定したJSONオブジェクトを返します。 – mozillanerd

+0

それはどうでしたか?ここに何かがありません。 – BNL

+2

2行目のコードは、 'chineseBox'というrvalueに評価されます。 'chineseBox.content = 5'と同じように' 5'と評価されます。 – Peter

答えて

2

これは、chineseBox.contentに同じオブジェクトであるchineseBoxへの参照があるためです。 A循環参照...

6

お客様のオブジェクトにはcircular referenceが含まれています。あなたは、このオブジェクトを印刷(または直列化)しようとした場合は、無限ループに入ってしまい

{content: {content: {content ... 

代わりに、あなたのシステムが真円に気づき、それに対して自分自身を保護するのに十分にスマートでした。

+0

私は、そのシステムがどのような出力を示したのか少し不思議です。 – numbers1311407

+0

ありがとうございました!と@ numbers1311407これは文字通り私の端末がどのように見えるかです:http://d.pr/nE8a –

+1

クール、それはNode.jsになります。 V8エンジンを使用しています。 – Peter

4

これは、循環参照を定義したことを意味します。言い換えれば、それ自体を参照する変数。

chineseBoxchineseBox.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.contentchineseBox.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

関連する問題