質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

意見交換

クローズ

12回答

5721閲覧

JSの変数名の先頭に$マークをつける理由

Cocode

総合スコア2314

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

4クリップ

投稿2023/01/31 23:40

編集2023/02/01 12:20

0

4

知りたいこと

  • JavaScript変数名の先頭に$マークをつける理由が知りたいです。
  • また、$をつける命名規則が一般的なのかどうかが知りたいです。

詳細

書籍では拝見したことないのですが、個人で書かれているJavaScriptまたはjQueryのコードで、たまに変数名の先頭に$マークをつけているのを見かけます。

例:

javascript

1const $hoge = fuga;

このような命名方法をしたことがある方、または見かけたことがある方に質問です。

どいう意味があるのでしょうか?
または、どういう意味があると思われますか?

また、この$マークを先頭につける命名方法は一般的なのでしょうか?


(クローズ時に追記)

たくさんのご意見ありがとうございます。
特に印象に残ったご意見を箇条書きにまとめさせていただきますと、

  • jQueryにて、jQueryオブジェクトをいれるための変数に使用すうることがある。
  • jQueryで↑以外の目的で使用 or JSで使っている場合は、他言語(PHP)のルールからの流れ。
  • 古いESのルール。
  • 現代は$は使わない方がよさそう。

たくさんのご回答ありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答12

#1

maisumakun

総合スコア145183

投稿2023/01/31 23:46

jQueryそのものが$という変数から供給されることが多いので、それの影響で「jQueryオブジェクトの入っている変数」を$で始めたことはあります。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/01/31 23:54

書籍では拝見したことないのですが、個人で書かれているJavaScriptまたはjQueryのコードで

その「個人」に聞かないと分からないと思います・・・ので、想像ですが jQuery オブジェクトを代入する変数を区別するためではないかと思われます。

「javascript 変数名 ドルマーク」などをキーワードにググるといろいろヒットするので自分でも調べてみましょう。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

yambejp

総合スコア114784

投稿2023/02/01 00:26

jsにおいて変数名は「英数字もしくは _ $」を利用でき先頭は数字以外を設定します(予約語を除く)。したがって$hogeは上記条件に合致するため設定が可能です。

jsに親和性の高いPHPが$から始まる文字を変数と定義していることからなんとなく$先頭の変数を利用している可能性はありますし、$から始まる予約語がないためケアレスミスを防ぐためにあえて$始まりの変数を使用している可能性もあります。

ただし、jQueryのように$単体にを特別な意味をもたせているライブラリもありますし、正規表現やテンプレートリテラル(バッククォート構文)の中で$は特別な意味をもっているので、明確な必要性がなければ$を多用することは避けたほうがよいでしょう

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#4

kawax

総合スコア10377

投稿2023/02/01 00:26

「JSの仕様上可能だから」だけど一番の影響はPHPの変数が$だから。
PHPとJSを同時に使ってる人が多かったから同じ使い方してただけ。
jQuery登場前からなのでjQueryの影響はない。
jQuery後はjQuery関連の変数に使う新しい使い方も生まれた。

どっちもただのローカルルールだし遥か昔の話なので忘れていい。
JSの仕様は「変数名の一文字目は数字以外のUnicode文字か_か$」ってだけ。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#5

yambejp

総合スコア114784

投稿2023/02/01 00:36

(つぶやき)
これが意見交換属性の質問なのですね。単純に意見交換タグになるのかと思ったらフォーマットまで違うのか。修正希望やコメントががつけられない形式というのはネストなしに次々に回答をつけてよいということでしょうか?むしろその方が荒れそうな気がしますが・・・。

批判がつかないということはこんな書き込みも「意見交換」としてあがってくるということなので。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#6

maisumakun

総合スコア145183

投稿2023/02/01 01:24

(コメント)

自分の回答に補足できない、というのはなかなか使いづらいですね……

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#7

m.ts10806

総合スコア80850

投稿2023/02/01 01:58

本件については「そういう慣習」と言えるかと。個人の好みやプロジェクトのルールにも依存します。

先にあるように$も変数名に使える文字列の一つでしかないので、つけた人なりの理由があるはずで、由来が必ず一つとは限りません(「諸説あり」レベル)

「つけると違和感」もあるでしょうし「つけないと違和感」もあるでしょう。

個人的にはjQueryを採用しているときにはごっちゃになるので、なるべく使ってませんが、「jQueryの機能を使った結果を保持するときは使ってるよ」という方針の人と仕事したことがあります。
実装方針はともかく、要件どおり動いていて不具合がなければそのアプリケーションは成り立つので、やはりプロジェクト次第ですね。
レビューで指摘された際に納得できる理由が出せるかどうかと言う感じで。

(コメント)せめてコメントは自由につけられるようにしないと「意見交換」にはならなそうですね。投げて終わりになる。説明文とかラベルはQAのままのところも多いですし。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#8

yambejp

総合スコア114784

投稿2023/02/01 02:22

若干話は変わりますが、プライベートフィールドのように#変数(プロパティ)が規定されているものもあるので、$変数での運用はあたかも言語上のルールのように思われてしまう懸念もあり混乱のもとになります。逆にそれをチームで作業をするにあたってのオリジナル制約とすれば、変数の管理を円滑にすることもできるのでなんともいえませんが。

参考

プライベートフィールドのサンプル

javascript

1class hoge{ 2 #val; 3 constructor(val){ 4 this.val=val; 5 } 6 set val(val){ 7 this.#val=!isNaN(val)?Number(val):undefined; 8 } 9 get val(){ 10 return this.#val; 11 } 12} 13 14const h=new hoge(123); 15console.log(h.val); 16h.val="456"; 17console.log(h.val); 18h.val="abc"; 19console.log(h.val);

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#9

think49

総合スコア18162

投稿2023/02/01 03:19

変数名にドル記号($)を使うことについては、過去に詳しい回答をしています。
過去ログを参照してください。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#10

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/02/01 03:39

(つぶやき)

スレ主がクローズすると回答を書き込めなくなるようですね。スレ主の意向次第で意見交換できなくなるってのもどうかと思うのですが・・・

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#11

arcxor

総合スコア2859

投稿2023/02/01 03:56

ハンガリアン記法をご存知ですか?

JavaScript においては jQuery オブジェクトである値を保持する変数の接頭辞を $ にするコーディングスタイルが流行っていました。

これはシステムハンガリアン記法の一種です。

https://ja.wikipedia.org/wiki/ハンガリアン記法

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#12

Cocode

総合スコア2314

投稿2023/02/01 09:15

みなさま回答ありがとうございます。
何人かの方がおっしゃている通り、回答へのコメント機能がないのが非常に不便ですね。

ないことのメリットとしては、心無いユーザーによる回答への攻撃的なコメントがしづらくなるということかと思います。
しかし、どうしても物申したい方は新規回答を投稿して、別回答への批判等をすることもあると思いますし、そうすると「質問への回答」「回答へのコメント」と回答欄が散乱してしまいますね。

Q&Aとは違う自由に意見を交わせる場ができたことは嬉しいですが、少し使いにくいかなという印象があります。

また、こちらも他の方がおっしゃている通り、クローズのタイミングが難しいです

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

質問者により この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問