6

私は次のJavaScriptコードを持っています:

var counter = 0;
function printCounter(){
   console.log("counter=" + ++counter);
   setTimeout(printCounter, 1000);
}
printCounter();

私はそれがこの出力を出力するはずだと期待しています:

counter=1
counter=2
counter=3
...

ただし、代わりに次のように出力されます。

counter=1
undefined  // <-- Notice this "undefined"
counter=2
counter=3
...

最初の反復後に「未定義」と出力されるのはなぜですか?

重要:このような動作は、コードがJavaScriptコンソールで実行された場合にのみ表示されます。それがページの一部である場合、それは正常に機能します。

4

1 に答える 1

9

これは、「printCounter()」関数自体がを返すためundefinedです。これが、式の結果を示すコンソールです。

最後に追加して「printCounter()」を変更return "Hello Anton!";します:-)

「戻るundefined」と言うのは少し紛らわしいです。実際には、明示的なリターンはありませんが、同じ効果です。

于 2012-04-21T21:34:48.167 に答える