問題のコードはここにあります:
var $item = $(this).parent().parent().find('input');
変数名にドル記号を使用する目的は何ですか?単にそれを除外しないのはなぜですか?
document.querySelector
and へのショートカットとして定義していますdocument.querySelectorAll
問題のコードはここにあります:
var $item = $(this).parent().parent().find('input');
変数名にドル記号を使用する目的は何ですか?単にそれを除外しないのはなぜですか?
document.querySelector
and へのショートカットとして定義していますdocument.querySelectorAll
回答:
変数の '$'は、アンダースコアのように、インタプリタにとって特別な意味はありません。
私が見てきたことから、jQueryを使用する多くの人々(これはサンプルコードのように見えます)は、jQueryオブジェクトを含む変数の前に$を付ける傾向があるため、簡単に識別され、整数などと混同されません。
$()
jQuery のドル記号関数は、頻繁に使用されるライブラリー関数なので、短い名前が望ましいです。
var $=function(){}
は行うことと非常に同じvar a=function(){}
です。
jQuery(document).ready(function($){
...そして、$は関数実装の中で使用されています。
$scope
$ の場合、その名前の文字の1つです。e
の最後にを外すように機能し$scope
ないので、を外して$
も機能しません。のようなものが表示された場合$( "a" ).addClass( "test" )
、ドル記号は何であれ完全な名前です。
あなたの例では、$は名前の文字であること以外に特別な意味はありません。
ただし、ECMAScript 6(ES6)では、$はテンプレートリテラルを表す場合があります
var user = 'Bob'
console.log(`We love ${user}.`); //Note backticks
// We love Bob.
$記号は、変数と関数の識別子です。
これは、ドル記号の目的を明確に説明しています。
ここに代替の説明があります:http : //www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html
ドル記号は、通常の文字またはアンダースコア(_
)と同様に扱われます。通訳にとって特別な意味はありません。
多くの類似言語とは異なり、JavaScriptの識別子(関数名や変数名など)には、文字、数字、アンダースコアだけでなく、ドル記号も含めることができます。ドル記号で開始することも、ドル記号のみで構成することもできます。
したがって、$
はJavaScriptで有効な関数または変数名です。
なぜ識別子にドル記号が必要なのですか?
構文は、識別子でのドル記号の特定の使用法を実際に強制しないので、それをどのように使用するかはあなた次第です。以前は、生成されたコード(つまり、手動ではなくコードジェネレーターによって作成されたコード)でのみ、識別子をドル記号で開始することが推奨されていました。
しかし、あなたの例では、これはそうではないようです。誰かが楽しみのために最初にドル記号を付けたように見えます-おそらく彼らは習慣からそれをしたPHPプログラマーか何かでした。PHPでは、すべての変数名の前にドル記号を付ける必要があります。
現在、インタープリターのドル記号には、もう1つの一般的な意味があります。その名前が単一のドル記号()のみで構成されるjQueryオブジェクト$
です。これは、Prototypeなどの以前のJavascriptフレームワークから借用した規則であり、jQueryが他のそのようなフレームワークで使用される場合、両方が名前を使用するため、名前の衝突$
が発生します(jQueryは、グローバルオブジェクトに別の名前を使用するように構成できます)。 。jQueryが単一のドル記号をオブジェクト名として使用できるようにするJavascriptには特別なものはありません。上記のように、これは単なる別の有効な識別子名です。
var $j = jQuery.noConflict();
$ jがjQueryオブジェクトになります。
ドル記号は、ecmascript 2015-2016では「テンプレートリテラル」として使用されます。例:
var a = 5;
var b = 10;
console.log(`Sum is equal: ${a + b}`); // 'Sum is equlat: 15'
ここで動作する例:https : //es6console.com/j3lg8xeo/ この記号「`」に注意してください。通常の引用符ではありません。
ライブラリjQueryを使用しているときにUが$を満たすこともできます。
正規表現の $記号は行末を意味します。
理由はありません。多分それをコード化した人はPHPから来ました。これは、「_ item」、「item」、または「item $$」という名前を付けた場合と同じ効果があります。
接尾辞(「item $」、「items」の発音など)として、ハンガリー語表記に類似した「フィンランド表記」と呼ばれる規則として、DOM要素などのオブザーバブルを表すことができます。
良い動画の説明は次のとおりです:https : //www.youtube.com/watch?v=Acm-MD_6934
Ecmaによると、国際識別子名は、いくつかの小さな変更を加えた、Unicode標準の第5章の「識別子」セクションに記載されている文法に従って解釈されるトークンです。Identifierは、ReservedWordではないIdentifierNameです(7.6.1を参照)。Unicode識別子の文法は、Unicode規格で指定されている規範的および有益な文字カテゴリの両方に基づいています。Unicode規格のバージョン3.0で指定されたカテゴリの文字は、準拠するすべてのECMAScript実装によって、それらのカテゴリのように扱われる必要があります。この規格は、特定の文字の追加を指定します。
ドル記号($)とアンダースコア(_)は、IdentifierNameのどこでも使用できます。
詳細については、http://www.ecma-international.org/ecma-262/5.1/#sec-7.6を参照してください。
Ecma Internationalは1961年に設立された業界団体で、情報通信技術(ICT)と家電(CE)の標準化に取り組んでいます。
jQueryを使用する場合$
、変数名の接頭辞としての記号の使用は慣例によるものです。これは完全にオプションであり、例のように、変数がjQueryオブジェクトを保持することを示すためにのみ機能します。
これは、オブジェクトで別のjQuery関数を呼び出す必要がある場合に、$()
再度ラップする必要がないことを意味します。たとえば、これらを比較します。
// the usual way
var item = $(this).parent().parent().find('input');
$(item).hide(); // this is a double wrap, but required for code readability
item.hide(); // this works but is very unclear how a jQuery function is getting called on this
// with $ prefix
var $item = $(this).parent().parent().find('input');
$item.hide(); // direct call is clear
$($item).hide(); // this works too, but isn't necessary
$
接頭すでにjQueryのオブジェクトを保持する変数は、と即座に認識し、コードの読みやすく、かつ排除ダブル/複数のラッピングです$()
。