JavaScriptの「$」記号の意味は何ですか


167

次のJavaScriptコードには、ドル$記号()があります。どういう意味ですか?

$(window).bind('load', function() {
    $('img.protect').protectImage();
});

1
次も参照してください:stackoverflow.com/a/553734/43615(JavaScript変数がドル記号で始まるのはなぜですか?)
Thomas Tempelmann、

回答:


284

コードのスニペットは、一般的なJavaScriptライブラリ(jQuery、ProtoType、mooToolsなど)の1つからのメソッドを参照しているように見えます。

$JavaScriptでのの使用について、何も不思議なことはありません。$単に有効なJavaScript識別子です。

JavaScriptでは、大文字と小文字、数字、および$を使用できます_$機械生成変数(などに使用されることを意図しました$0001)。

プロトタイプ、jQuery、およびほとんどのJavaScriptライブラリは$、プライマリベースオブジェクト(または関数)としてを使用します。それらのほとんどは、$それを使用する別のライブラリで使用できるように、を放棄する方法もあります。その場合は、のjQuery代わりに使用します$。実際、$はのショートカットにすぎませんjQuery


2
@Paolo:どういう意味かわからない。(私は以前に受け入れられたものだと思います。)まあ、私は少なくとも完全に正しいと思っていました。これには補助的な情報が少し含まれていますが、それが「多く」を正当化するかどうかは
わかり

1
@Noldorin:付随的な情報は良いことです。あなたの質問では、$が使用された理由、それが使用できる理由、およびjQueryがそれを使用する多くのライブラリの1つにすぎないという事実についてまったく触れていませんでした。受け入れられた回答としてそれを持っているということは、それが質問に対して可能な最良の回答であることを意味し、そうではありませんでした。
Paolo Bergantino、

+1これは、最初に有効なJavaScript識別子であり、JavaScriptフレームワークによってエイリアスとして2番目によく使用されます。
ガンボ

@Paolo:はい、そうです。しかしながら、OPがこれについて知りたがっている兆候はありませんでした。直接的な答えも良いことです。:)それを言って、私はまだこれがより良い答えであることに同意します。私の唯一の問題は、あなたが特定の点に重点を置いていたことでした。
ノルドリン2009

2
ところで、私はここに私のポストで$関数の後ろに少し歴史を提供:stackoverflow.com/questions/1122690/jquery-and-questions/...
SolutionYogi

44

別の答えから:

ちょっとした歴史

に本質的に特別なことは何もないことを覚えておいてください$。他の変数と同じように変数名です。以前は、document.getElementByIdを使用してコードを記述していました。JavaScriptでは大文字と小文字が区別されるため、の作成中に間違いを犯すことはよくありましたdocument.getElementById。私は首都'b'にすべき'by'ですか?私'i'Id?あなたの資本がドリフトを得る必要があります。関数はJavaScriptの第一級市民であるため、いつでもこれを行うことができます。

var $ = document.getElementById; //freedom from document.getElementById!

Prototypeライブラリが到着したとき、彼らはDOM要素を取得する関数にと名前を付けました'$'。ほとんどすべてのJavaScriptライブラリがこのアイデアをコピーしました。プロトタイプは、$$CSSセレクターを使用して要素を選択する機能も導入しました。

jQueryも$関数を適応させましたが、必要な要素を取得するためにあらゆる種類の「セレクター」を受け入れるように拡張されました。ここで、プロジェクトですでにPrototypeを使用していて、jQueryを含めたい'$'場合、Prototypeの実装またはjQueryの実装を参照する可能性があるため、問題になります。そのため、jQueryにはnoConflictのオプションがあり、プロトタイプを使用するプロジェクトにjQueryを含めて、コードをゆっくりと移行できます。これはジョンの側の素晴らしい動きだったと思います!:)


10
var $ = document.getElementById;FirefoxまたはGoogle Chromeでは機能しません。function $(id) { return document.getElementById(id); }代わりに使用する必要があります。詳細については、stackoverflow.com / questions / 1007340を参照してください。
グラントワグナー

私はそれを知りませんでした、グラントに感謝します。私はこのテクニックを頻繁に使用したため、これがIE6とFirefox 2で機能していたことを確認できます。メインの投稿を更新します。
SolutionYogi

42

それは、おそらくjQueryコード(より正確には、jQueryライブラリーを使用するJavaScript)です。

$表しjQueryの機能を、そして実際の略記の別名ですjQuery。(ほとんどの言語とは異なり、$記号は予約されておらず、変数名として使用できます。)通常は、セレクター(つまり、DOMで見つかった要素のセットを返す関数)として使用されます。


3
$はxと同じように追加する必要があります。割り当てられるものは何でもかまいません
09

このコードは何を意味しますか:$ input.prop( 'type')== 'radio';
OKGimmeMoney 2014

21

他のすべての答えが言うように; ほとんど何でもかまいませんが、通常は「JQuery」です。

ただし、ES6では、「リテラル」テンプレートの文字列補間演算子です。

var s = "new" ; // you can put whatever you think appropriate here.
var s2 = `There are so many ${s} ideas these days !!` ; //back-ticks not quotes
console.log(s2) ;

結果:

最近はたくさんの新しいアイデアがあります!!


2
これは便利な答えです。jQueryや他のライブラリーがないことを知っていたので、これは私が探していたものです。これは、基本的には引用符とプラスの兆候などを使用せずに長い文字列内の変数を印刷する方法です
オスカーブラボー


4

上記の回答に加えて、$JavaScriptでは特別な意味はありません。オブジェクトの命名に自由に使用できます。でjQueryの、単にの別名として使用されているjQueryのオブジェクトとjQueryの()関数。ただし、$も使用する別のJSライブラリと組み合わせて使用​​したい場合があります。これにより、名前の競合が発生します。このため、JQueryにはメソッドがありjQuery.noConflict()ます。

ここにjQueryドキュメントのサンプルがあります:

<script src="other_lib.js"></script>
<script src="jquery.js"></script>
<script>
$.noConflict();
// Code that uses other library's $ can follow here.
</script>

または、次のようなものを使用することもできます

(function ($) {
// Code in which we know exactly what the meaning of $ is
} (jQuery));

参照https : //api.jquery.com/jquery.noconflict/


3

jQuery Core Objectを説明するjQueryドキュメントから:

多くの開発者は、区別するために、jQueryオブジェクトを含む変数の名前に$をプレフィックスとして付けています。この方法には魔法はありません。これは、一部の人々がさまざまな変数の内容を追跡するのに役立つだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.