2

私はそれを読んだ

JavaScriptは、宣言された関数を他の変数の前にキャッシュします。この後、JavaScriptはスコープの先頭に戻り、変数の定義と関数呼び出しを表示された順序で実行します。

そして、私はこの例を理解していません

//bob first initialization
function bob()
{
    alert('bob');
}
 
//set jan to bob via reference
var jan = bob;

//set bob to another function
function bob()
{
    alert('newbob');
}
 
jan(); //alerts 'bob'
bob(); //alerts 'newbob'

両方のbob()関数が宣言され、実行前にキャッシュされます。それでは、なぜjan()「newbob」ではなく「bob」にアラートを送信するのですか?janが初期化されたとき、bob()はすでに再宣言されていました。

何か案は?ありがとう

4

1 に答える 1

1

(ポインタとして)janの最初の宣言を指しているので、2番目の宣言の後に設定する必要がある新しい宣言ではありませんbobbobjan = bob;

しかし、よくわかりません。

于 2012-12-05T15:44:25.540 に答える