javascript - 関数 - node js ドル マーク




JavaScript変数がドル記号で始まるのはなぜですか? (11)

ドル記号で始まる変数を持つJavaScriptがよく見かける。 このように変数に接頭辞を付けるのはいつ/なぜですか?

(私はあなたがjQueryなどで見られる$('p.foo')構文については求めていないが、 $name$orderような通常の変数)


$は、通常の変数の場合に共通変数とjquery変数との間のDISTINGUISHに使用されます。 FLIPKARTで注文すると、注文が文字列出力を示す変数であれば、それは "order"という単純な名前になりますが、注文をクリックするとオブジェクトが返され、そのオブジェクトは "$プログラマがコード全体のjavascript変数とjquery変数を取り除くことができるようにします。


$文字はJavaScriptエンジンにとって特別な意味を持ちません。 これは、az、AZ、_、0-9などのような変数名のもう一つの有効な文字です...


Stevoはそうだ、ドルスクリプトの記号の意味と使い方は(JavascriptとjQueryプラットフォームではあるがPHPではない)完全に意味がある。 $は識別子名の一部として使用できる文字です。 さらに、ドル記号はおそらくあなたがJavascriptで遭遇することができる最も奇妙なものではありません。 有効な識別子名の例を次に示します。

var _       = function() { alert("hello from _"); }
var \u0024  = function() { alert("hello from $ defined as u0024"); }
var Ø       = function() { alert("hello from Ø"); }
var $$$$$   = function() { alert("hello from $$$$$"); }

上記の例はすべて動作します。

それらを試してください。


jQueryでよく使用されるのは、変数に格納されたjQueryオブジェクトを他の変数と区別することです。 たとえば、私は

var $email = $("#email"); // refers to the jQuery object representation of the dom object
var email_field = $("#email").get(0); // refers to the dom object itself

これはjQueryコードを記述するのに非常に役立ち、異なるプロパティセットを持つjQueryオブジェクトを簡単に見ることができます。


ECMAScriptの第1版 、第2 第3版では 、$ -prefixed変数名を使用することは、自動生成されたコードのコンテキストを除いて、仕様によって明示的に推奨されませんでした。

ドル記号( $ )とアンダースコア( _ )は識別子のどこでも許可されます。 ドル記号は、機械的に生成されたコードでのみ使用されます。

しかし、次のバージョン(現在の第5版 )では、この制限が解除され、上記の置き換えは

ドル記号( $ )とアンダースコア( _ )は、 IdentifierNameのどこでも許可されます。

したがって、$記号は変数名で自由に使用できます。 特定のフレームワークとライブラリには、シンボルの意味に関する独自の慣習があります(他の回答に記載されています)。


${varname}は、jQuery開発者がjQuery要素を保持する変数を区別するために使用する命名規則です。

Plain {varname}は、テキストや文字列のような一般的なものを格納するために使用されます。 ${varname}はjQueryから返される要素を保持し${varname}

プレーンな{varname}を使ってjQuery要素を格納することもできますが、最初に述べたように、これは単純変数と区別され、理解しやすくなります(プレーン変数を混乱させ、それは保持する)。

例えば ​​:

var $blah = $(this).parents('.blahblah');

ここで、blahは返されたjQuery要素を格納しています。

だから、他の誰かがコードで$blahを見ると、それは単なる文字列でも数字でもないことを理解するでしょう。それはjQuery要素です。


ドル記号は、機械的に生成されたコードによって使用されることが意図されています。 しかし、この規約は、広く普及しているJavaScriptライブラリによっては壊れています。 JQuery、Prototype、MS AJAX(AKA Atlas)はすべてこの文字を識別子(または識別子全体)として使用します。

つまり、いつでも$を使うことができます。 (通訳者は不平を言うことはありません)。質問はいつそれを使いたいのですか?

私は個人的には使用しませんが、その使用は有効だと思います。 私はMS AJAXが関数をより冗長な呼び出しのエイリアスであることを示すために使用していると思います。

例えば:

var $get = function(id) { return document.getElementById(id); }

それは妥当な条約のようです。


ドル記号($)または二重ドル記号($$)が表示され、Prototypeフレームワークでこれが何を意味しているのか不思議です。

$$('div');
// -> all DIVs in the document.  Same as document.getElementsByTagName('div')!

$$('#contents');
// -> same as $('contents'), only it returns an array anyway (even though IDs must be unique within a document).

$$('li.faux');
// -> all LI elements with class 'faux'

ソース:
http://www.prototypejs.org/api/utility/dollar-dollar


有効なJavaScript識別子shuoldは、文字、アンダースコア(_)、またはドル記号($)で始まる必要があります。 後続の文字は数字(0〜9)でもかまいません。 JavaScriptでは大文字と小文字が区別されるため、文字には "A"から "Z"(大文字)と "a"から "z"(小文字)の文字が含まれます。

詳細:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables


私が過去4年間経験したように、値/オブジェクトを指す変数かjQueryがDOM要素をラップしたかどうかを簡単に識別できるようになります

Ex:
var name = 'jQuery';
var lib = {name:'jQuery',version:1.6};

var $dataDiv = $('#myDataDiv');

上記の例で変数 "$ dataDiv"が表示されたら、この変数がjQueryのラップDOM要素(この場合divです)を指していると簡単に言えます。 また、$ dataDiv.append()、$ dataDiv.html()、$ dataDiv.find()の代わりに$($ dataDiv).append()のようにオブジェクトを再度ラップしないで、すべてのjQueryメソッドを呼び出すことができます。

それが助けてくれることを願っています。 最終的にこれを守ることは良い習慣になると言いたいが、必須ではない。


識別子を接頭辞として使用するだけで、テンプレートの置換トークンなど、生成されたコードに使用されるはずです。





naming-conventions