-4

以下のコードは、Hello1234 と未定義の 2 つのアラートを次々に表示します。

var b ={ status:"Ready" ,
         deep : { a:12 , b:"String" ,
                  c:function() {alert("Hello1234");
                               }
                 }  
        }

alert(b.deep.c());

なぜそれが起こるのか誰か教えてもらえますか?

4

6 に答える 6

4

alert()2 回呼び出しc()ているためですc()

于 2012-09-25T14:57:51.690 に答える
1

値として「Hello ..」が必要なようです。次を試してください。

var b ={ status:"Ready" ,
         deep : { a:12 , b:"String" ,
                  c:function() {return "Hello1234";
                               }
                 }  
        }

alert(b.deep.c());
于 2012-09-25T14:58:58.953 に答える
1

これは、次の理由で発生します。

  1. b.deep.c()その中に呼び出しがalertあります。
  2. そのメソッドの戻り値は定義されていませんがalert、戻り値を取得しようとするので、 [未定義の文字列表現] を取得しますundefined
于 2012-09-25T14:59:09.507 に答える
0

cアラート可能なものは何も返さないのでundefined、何かを返します:

var b ={ status:"Ready" ,
         deep : { a:12,
                  b:"String" ,
                  c:function() {
                     alert("Hello1234"); 
                     return "ALERT ME";
                  }
                 }  
        }

alert(b.deep.c());​
于 2012-09-25T14:58:55.990 に答える
0

この関数cは値を返さないため、呼び出すalert(c())と実行さcれ ("Hello1234" が警告されます)、戻り値 - が警告されますundefined

于 2012-09-25T14:59:05.910 に答える