2016-10-06 14 views
0

私はjQueryを使い始めていますが、関数内にかっこを入れるかどうかの違いは何ですか?jQueryの関数の中にかっこ付きかどうかで関数を書くこととの違いは何ですか?

function test(){ 
    alert("pen pineapple apple pen"); 
} 

この:

$(document).ready(test); 

と、この:私は次の関数がある場合たとえば は、 "ペンパイナップルリンゴペン"

$(document).ready(test()); 

の両方を同じ結果を示しました

+0

も参照してください[この質問](http://stackoverflow.com/questions/3246928/in-javascript-does-it-make-a-difference-if-i-call-a-function-with-eparentheses) 。 – nnnnnn

答えて

3

ファンクションの末尾にカッコを入れて()にすると、そのファンクション直ちに呼び出され、その式の戻り値を使用します。

このコード$(document).ready(test);は、コールバック関数としてtestを使用しています。基本的には、ドキュメントが準備完了になったら、私が提供している関数を呼び出してください(test)。

このコード$(document).ready(test());は、即座に、関数testを呼び出して値を返し、その値をreadyメソッドに渡します。 testがここで別の関数を返す可能性があります。これは、必要なコールバック関数として機能します。しかし、誤って括弧を含めて誤って誰かが持っていてはいけないときに、エラーになる可能性もあります。

+0

fwiw、 '$(document).ready(未定義)'はエラーではありません – naomik

+0

@nbrooks正解です。また、コンソールで 'function test(){alert(" pen pineapple apple pen ");}という関数をテストすることもできます。 } '関数を呼び出すと' test() 'というポップアップが表示されますが、かっこなしで関数を呼び出すと式 –

+0

が返されます@naomik - これは構文エラーでもjQueryでもありませんが、プログラマーの間違い。 – nnnnnn

関連する問題