2012-02-07 12 views
0

次のコードでは、関数writeMessageがかっこなしで呼び出されます。しかし、それはうまく動作しますが、それは正しい関数の呼び出し方法はJavaScriptまたはより良いかっこをwriteMessage()と一緒に使用することです。JavaScript関数を呼び出す正しい方法は何ですか?

window.onload = writeMessage; 

function writeMessage() 
{ 
    document.write("Hello World"); 
} 
+0

多くのことがそうであるように、JavaScriptでは何かを行う正しい方法はありません。同じことをする方法はたくさんありますが、それぞれが同じ「正しさ」を持っています。さらに重要なことに、かっこを使用するかどうかを決めるには、JavaScriptの関数宣言と同じ行に、他の言語とは異なるが、「正しい」という意味の*を*必ず入れてください。 – danwellman

答えて

0

これは既に正しいことです。

括弧は必要ありません。これは、関数をwindow.onloadに保存しているだけで、自分で呼び出すわけではありません。

5

window.onload = writeMessage;は呼び出しではありません。これは割り当てです。 writeMessage関数をwindowオブジェクトのonloadフィールドに割り当てます。実際の呼び出しは、内部でwindow.onload()として実行されます。これは、ケースではwriteMessage()に相当します。

+0

次のコードも? onclick = "writeMessage" ' – sandbox

+1

@sandbox:いいえ、HTMLの' onclick' *属性*内に書くのは、関数の本体となるので、そこで 'writeMessage'を呼び出すには、* call *' writeMessage'が必要です(例えば 'onclick =" writeMessage(); ")。しかし、あなたのマークアップに 'onXYZ'属性を使用することは避けてください。物事をフックする良い方法があります。 –

+0

@ T.J.Crowder onclickがjavascript関数にある場合...?例えば: 'document.getElementById(" redirect ")。onclick = myFunction();' – sandbox

2

次のコードでは、関数writeMessageはかっこなしで呼び出されます。

実際にはありません。コード

window.onload = writeMessage; 

はは、関数を呼び出すしません。 onloadプロパティにwindowの関数を割り当てます。ブラウザでページを読み込むプロセスの一部は、読み込みプロセスが完了したら、そのプロパティに割り当てられた関数(存在する場合)を起動することです。

あなたがwriteMessageを呼び出し、ちょうどx = foo();のように、結果window.onloadへの呼び出しの割り当てているやっていると思います何

window.onload = writeMessage(); 

を書いた場合。


あなたがdocument.writeを呼び出すときため、ページのロードdocument.writeを実行し、あなたが実際に引用されたコードは、ちょうどロードされたページを一掃し、テキスト「こんにちは」と交換することに注意してくださいページのロードが完了した後は、document.openを意味し、ページをクリアします。 (hereを試してください;ソースコードhere)現代のWebページやアプリケーションでは、ほとんどdocument.writeを使用しませんが、まれに、ページがロードされているときに実行されるコードでなければなりません)。

1

()はあなたが

window.onload = writeMessageを書くとき機能

をEXECUTE に使用されます。 onloadイベントがoccourます -

あなたが実際にいる(実行される機能にpointerデリゲートを設定します。

関連する問題