2

私はこのコードを持っています

window.onload = function() {            
    function foo() {
        alert("test");
    }
    setInterval("foo()",500)
}

これは未定義を返します...window.onloadの外で使用すると機能します。誰かが私に理由を説明できますか?

4

4 に答える 4

12

で文字列コマンドを使用するsetInterval()と、グローバル(ウィンドウ)スコープで関数を検索しようとしますが、関数はローカルスコープで定義されているため、見つかりません。代わりに、関数自体をに渡す必要がありますsetInterval()

window.onload = function() {            
    function foo() {
        alert("test");
    }
    setInterval(foo, 500);
}
于 2010-01-29T13:46:32.727 に答える
1

これを試して:

function foo() {
    alert("test");
}

window.onload = function() {            
    setInterval("foo()",500)
}

わたしにはできる。

于 2010-01-29T13:46:21.607 に答える
0

または、setInterval の呼び出し内で関数を定義することもできます。

window.onload = function() {
    setInterval(
        function foo() {
            alert("test");
        },
        500
    );
}
于 2010-01-29T13:50:13.800 に答える