6

私はプログラムを作成してきましたが、次のように2つの関数を開始することの違いを知りたいです:

$(function () {
   //content
});

function Name () {
    //content
}

また、最初の例に名前を付けられないのはなぜですか? 最初の例を 2 番目のタイプに変更してみましたが、機能が完全に機能しなくなりました。最初の例では jQuery を使用しましたが、すべて問題ありませんでしたが、別の例では機能が停止しました。

違いは何ですか?

4

4 に答える 4

15

$(function () {});これはのショートカットです$(document).ready(function(){});

これの間:

function Name () {
    //content
}

標準の JavaScript 関数です。

于 2013-05-18T19:21:20.333 に答える
4

1 つ目は jQueryreadyイベントに使用される関数式で、2 つ目は関数です。

Using$(function(){...});は の省略形です$(document).ready(function(){...});

ドキュメントのready読み込みが完了するとイベントが発生するため、イベント ハンドラーが自動的に実行されます。通常の関数は、呼び出さない限りまったく実行されません。

イベント ハンドラの関数式の代わりに通常の関数を使用することもできます。

function readyHandler() {
  ...
}

$(readyHandler); // or $(document).ready(readyHandler);

関数式には次のように名前を付けることができます。

var x = function y() { ... };

ただし、関数式の名前 (y例) はグローバルではなく、関数自体の内部でのみ使用できます。また、これの正確な実装はブラウザによって異なるため、使用しないでください。

于 2013-05-18T19:26:24.073 に答える
1

最初のものは、いわゆる無名関数です。ドキュメント準備完了イベントで実行されます

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

そしてjQueryの慣習です。直接呼び出すことができないため、名前はありません/必要ありません。

2 番目のバージョンは、いつでも名前で呼び出すことができる標準関数です。

最初のものを 2 番目の表記に変更すると、ドキュメント準備完了時に自動的に実行されなくなります。安全な方法は、"worklaod" を 2 番目の表記の関数に移動し、最初の表記でその関数を呼び出す行を作成することです。そうすれば、別々に呼び出し可能な関数と単純な自動実行という両方の長所を活用できます。

于 2013-05-18T19:25:57.167 に答える
1

最初の1つ:

 $(function () {
 //content
 });

匿名関数を jQuery オブジェクト $ に渡しています。$(document).ready(function(){});

2 番目は、 という名前の単なる JavaScript 関数Nameです。

于 2013-05-18T19:26:53.173 に答える