web-dev-qa-db-ja.com

jquery変数の構文

私は他の人のコードを理解しようとすることでjQueryを学んでいます。私はこれに遭遇しました:

jQuery.fn.myFunc = function(options, callback) {

//stuff

  jQuery(this)[settings.event](function(e) {
    var self = this,
    $self = jQuery( this ),
    $body = jQuery( "body" );
     //etc.
  }

//more stuff

}

私の理解では、$はjQueryオブジェクトを指します。では、なぜ$$self$bodyと一緒に入れるのですか? self$selfと同じですか?

83
dnagirl

$ selfは、この場合のjQueryのエイリアスである$とはほとんど関係ありません。一部の人々は、通常の変数とjQueryオブジェクトを区別するために、変数とドル記号を組み合わせることを好みます。

例:

var self = 'some string';
var $self = 'another string';

これらは2つの異なる変数として宣言されます。プライベート変数の前にアンダースコアを置くようなものです。

やや人気のあるパターンは次のとおりです。

var foo = 'some string';
var $foo = $('.foo');

そうすれば、コードの後半で$ fooがキャッシュされたjQueryオブジェクトであることがわかります。

214
David Hellsing

これは純粋なJavaScriptです。

$について特別なことはありません。変数名に使用できるのは単なる文字です。

var $ = 1;
var $$ = 2;
alert($ + $$);

jQueryは、そのコア関数を$という変数に割り当てるだけです。使用しているコードは、thisというローカル変数にselfを割り当て、$selfというグローバル変数への引数としてthisを指定してjQueryを呼び出した結果です。

くて汚くて混乱しますが、$self、および$selfはすべて、似たような名前を持つさまざまな変数です。

27
Quentin

いいえ、確かにそうではありません。これは単なる別の変数名です。あなたが話している$()は、実際には jQueryコア関数 です。 $selfは単なる変数です。必要に応じて、fooに名前を変更することもできますが、これによって変更されることはありません。 $(および_)は、Javascript識別子の正当な文字です。

これが行われる理由は、多くの場合、単なるコードの規則であるか、逆のキーワードとの衝突を避けるためです。次のように$thisによく使用します。

var $this = $(this);
9
BalusC

selfと$ selfは同じではありません。前者は「this」が指すオブジェクトであり、後者は「scope」が「this」が指すオブジェクトであるjQueryオブジェクトです。同様に、$ bodyはbody DOM要素ではなく、body要素をスコープとするjQueryオブジェクトです。

7
Rich

Var名の接頭辞としてのドル記号は、 ハンガリー語表記 の概念の使用法です。

2
Jan