2

ここで何が起こっているのか正確に知りたいです。私は何を$(document).ready(function() {...});し、いつそれが有効になるかを知っています。についても同様ですjQuery(function($) {...}

しかし、これは何をしますか?

!function ($) {
  $(function(){
    var $window = $(window)
    //normal jquery stuff
  })
}(window.jQuery)

ドキュメントが「準備完了」になったときではなく、jQuery が読み込まれたときに読み込まれますか?

4

5 に答える 5

8

$変数に の値が割り当てられたクロージャを作成しますwindow.jQuery

その意図は、変数名としても使用する多数の他のライブラリやカスタム関数と競合することなく、情報量の少ない名前の変数$をショートカットとして使用できるようにすることです。jQuery$

于 2013-01-04T16:36:00.903 に答える
4

! を使用して 関数の前の演算子により、式として扱われます

!function () {}()
于 2013-01-04T16:37:49.527 に答える
3

あなたが見ている構文は、jQuery クロージャを設定するために使用されます。これは、jQuery$変数がコード内で使用可能で正しいことを保証するために使用されます。つまり、グローバル スコープで他のものによって上書きすることはできません (複数のライブラリを使用している場合などに可能です)。

この手法は、jQuery プラグインの作成者によってよく使用されます。詳しく知りたい場合は、こちらのドキュメントを参照してください。jQuery コードをこのような関数でラップする理由が詳しく説明されています。

あなたの例で異なる唯一の興味深い点は、ドキュメントでは関数が括弧で囲まれているのに対し、あなたが与えた例では、その前に!

は演算子ですが!not実際には何にも使用されません。コードの1文字を保存するために、括弧の代わりにあるだけだと思います。JavaScript の縮小化に興味がある場合は、おそらく役立つでしょう。

于 2013-01-04T16:38:58.903 に答える
0

よくわかりませんが、これは(function(){})()アプローチと多少同等であり、jsクロージャーに関するものだと思います。そしてそれは確か$jQuery同じことです

于 2013-01-04T16:38:02.427 に答える
0

「!」'not' 演算子です。コードでは何もしません。これが存在する唯一の理由は、関数がすぐに実行されることを示すためです。

代わりに、関数が括弧で囲まれている場合もあります。

(function() {}());

何を使うかは個人の好みです。

于 2013-01-04T16:44:38.147 に答える