2012-01-12 10 views
9

私が集めたことから、前者は関数のreturn文がonloadプロパティになるものの実際の値を割り当て、後者は実際の関数を割り当て、ウィンドウがロードされた後に実行します。しかし、私はまだよくわからない。詳しく説明できる人に感謝します。window.onload = init();の違いは何ですか?およびwindow.onload = init;

+1

はい、それはまったく違いです。 –

+0

あなたが正しい定義を与えた場合、わからないことはわかりません。詳しく教える? –

+0

私が読んでいる本は明確な違いがあると言いましたが、私にとってはまったく同じことを成し遂げています。この関数は、ページが読み込まれた後に実行されます。いずれかを使用するポイントは何ですか? – Andy

答えて

10
window.onload = init(); 

は、それが実行されますときは、init関数からを返されたが何であれにonloadイベントを割り当てます。 init直ちに、(ウィンドウの読み込みが行われるような、今ない)が実行され、結果がwindow.onloadに割り当てられます。それはあなたが今までにこれをしたいと思うそうですが、以下は、有効な次のようになります。

function init() { 
    var world = "World!"; 
    return function() { 
     alert("Hello " + world); 
    }; 
} 

window.onload = init(); 

window.onload = init; 

は、関数initにonloadイベントを割り当てます。 onloadイベントが発生すると、init関数が実行されます。

function init() { 
    var world = "World!"; 
    alert("Hello " + world); 
} 

window.onload = init; 
+1

どのような場合にどのような使用例がありますか? –

+0

それは理にかなっていますが、私の質問は、(ない)宣言とない宣言の違いは何でしょうか?両方ともウィンドウがロード完了したときに実行されるためです。 – Andy

+0

@Andy - 大きな違いがあります - 私は私の答えを精緻化しました –

4
window.onload = foo; 

は、ウィンドウオブジェクトのOnLoadプロパティにFOOの値を割り当てます。

window.onload = foo(); 

は、ウィンドウオブジェクトのonloadイベントプロパティにのfoo()を呼び出すことによって返された値を割り当てます。その値がreturn文かどうかは、fooに依存しますが、return文が必要な関数を返すことは意味があります。

の値がwindow.onloadの場合、ウィンドウのイベントハンドラはそれを呼び出します。

1

良い答え、もう一つ追加する:

ブラウザのランタイムは、非オブジェクトなどwindow.onloadとしてDOMイベントに設定(string, number, true, false, undefined, null, NaN)の値を無視します。したがって、window.onload = 10または上記の値タイプ(ハイブリッドstringを含む)のいずれかを記述すると、イベントはnullのままです。

window.onload = new Dateは、イベントハンドラがどんなオブジェクトタイプの値を取得するのも面白いですが、window.onloadをログに記録するときに現在の日付を入力する非常に有効なコードです。 :)しかし、window.loadイベントが発生すると、何も起こりません。

JavaScriptでは、常にどのイベントにも関数を割り当てます。

関連する問題