意見交換
知りたいこと
- JavaScript変数名の先頭に
$
マークをつける理由が知りたいです。 - また、
$
をつける命名規則が一般的なのかどうかが知りたいです。
詳細
書籍では拝見したことないのですが、個人で書かれているJavaScriptまたはjQueryのコードで、たまに変数名の先頭に$
マークをつけているのを見かけます。
例:
javascript
1const $hoge = fuga;
このような命名方法をしたことがある方、または見かけたことがある方に質問です。
どいう意味があるのでしょうか?
または、どういう意味があると思われますか?
また、この$
マークを先頭につける命名方法は一般的なのでしょうか?
(クローズ時に追記)
たくさんのご意見ありがとうございます。
特に印象に残ったご意見を箇条書きにまとめさせていただきますと、
- jQueryにて、jQueryオブジェクトをいれるための変数に使用すうることがある。
- jQueryで↑以外の目的で使用 or JSで使っている場合は、他言語(PHP)のルールからの流れ。
- 古いESのルール。
- 現代は
$
は使わない方がよさそう。
たくさんのご回答ありがとうございました。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答12件
#1
総合スコア142168
投稿2023/01/31 23:46
jQueryそのものが$
という変数から供給されることが多いので、それの影響で「jQueryオブジェクトの入っている変数」を$
で始めたことはあります。
#2
総合スコア17614
投稿2023/01/31 23:54
書籍では拝見したことないのですが、個人で書かれているJavaScriptまたはjQueryのコードで
その「個人」に聞かないと分からないと思います・・・ので、想像ですが jQuery オブジェクトを代入する変数を区別するためではないかと思われます。
「javascript 変数名 ドルマーク」などをキーワードにググるといろいろヒットするので自分でも調べてみましょう。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#3
総合スコア109839
投稿2023/02/01 00:26
jsにおいて変数名は「英数字もしくは _ $」を利用でき先頭は数字以外を設定します(予約語を除く)。したがって$hogeは上記条件に合致するため設定が可能です。
jsに親和性の高いPHPが$から始まる文字を変数と定義していることからなんとなく$先頭の変数を利用している可能性はありますし、$から始まる予約語がないためケアレスミスを防ぐためにあえて$始まりの変数を使用している可能性もあります。
ただし、jQueryのように$単体にを特別な意味をもたせているライブラリもありますし、正規表現やテンプレートリテラル(バッククォート構文)の中で$は特別な意味をもっているので、明確な必要性がなければ$を多用することは避けたほうがよいでしょう
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#4
総合スコア10168
投稿2023/02/01 00:26
「JSの仕様上可能だから」だけど一番の影響はPHPの変数が$だから。
PHPとJSを同時に使ってる人が多かったから同じ使い方してただけ。
jQuery登場前からなのでjQueryの影響はない。
jQuery後はjQuery関連の変数に使う新しい使い方も生まれた。
どっちもただのローカルルールだし遥か昔の話なので忘れていい。
JSの仕様は「変数名の一文字目は数字以外のUnicode文字か_か$」ってだけ。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#5
総合スコア109839
投稿2023/02/01 00:36
(つぶやき)
これが意見交換属性の質問なのですね。単純に意見交換タグになるのかと思ったらフォーマットまで違うのか。修正希望やコメントががつけられない形式というのはネストなしに次々に回答をつけてよいということでしょうか?むしろその方が荒れそうな気がしますが・・・。
批判がつかないということはこんな書き込みも「意見交換」としてあがってくるということなので。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#6
総合スコア142168
投稿2023/02/01 01:24
(コメント)
自分の回答に補足できない、というのはなかなか使いづらいですね……
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#7
総合スコア80351
投稿2023/02/01 01:58
本件については「そういう慣習」と言えるかと。個人の好みやプロジェクトのルールにも依存します。
先にあるように$も変数名に使える文字列の一つでしかないので、つけた人なりの理由があるはずで、由来が必ず一つとは限りません(「諸説あり」レベル)
「つけると違和感」もあるでしょうし「つけないと違和感」もあるでしょう。
個人的にはjQueryを採用しているときにはごっちゃになるので、なるべく使ってませんが、「jQueryの機能を使った結果を保持するときは使ってるよ」という方針の人と仕事したことがあります。
実装方針はともかく、要件どおり動いていて不具合がなければそのアプリケーションは成り立つので、やはりプロジェクト次第ですね。
レビューで指摘された際に納得できる理由が出せるかどうかと言う感じで。
(コメント)せめてコメントは自由につけられるようにしないと「意見交換」にはならなそうですね。投げて終わりになる。説明文とかラベルはQAのままのところも多いですし。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#8
総合スコア109839
投稿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
総合スコア18081
投稿2023/02/01 03:19
変数名にドル記号($
)を使うことについては、過去に詳しい回答をしています。
過去ログを参照してください。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#10
総合スコア17614
投稿2023/02/01 03:39
(つぶやき)
スレ主がクローズすると回答を書き込めなくなるようですね。スレ主の意向次第で意見交換できなくなるってのもどうかと思うのですが・・・
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#11
総合スコア2419
投稿2023/02/01 03:56
ハンガリアン記法をご存知ですか?
JavaScript においては jQuery オブジェクトである値を保持する変数の接頭辞を $ にするコーディングスタイルが流行っていました。
これはシステムハンガリアン記法の一種です。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#12
みなさま回答ありがとうございます。
何人かの方がおっしゃている通り、回答へのコメント機能がないのが非常に不便ですね。
ないことのメリットとしては、心無いユーザーによる回答への攻撃的なコメントがしづらくなるということかと思います。
しかし、どうしても物申したい方は新規回答を投稿して、別回答への批判等をすることもあると思いますし、そうすると「質問への回答」「回答へのコメント」と回答欄が散乱してしまいますね。
Q&Aとは違う自由に意見を交わせる場ができたことは嬉しいですが、少し使いにくいかなという印象があります。
また、こちらも他の方がおっしゃている通り、クローズのタイミングが難しいです
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
関連した質問
意見交換
クローズ
JSの変数名の先頭に$マークをつける理由
回答12
クリップ4
更新
2023/02/01
Q&A
受付中
javascriptのコードからpythonの関数を実行させたい
回答2
クリップ1
更新
2023/03/21
Q&A
受付中
classNameの使い方と引数の中身について
回答2
クリップ1
更新
2023/03/18
意見交換
受付中
プログラマを目指す際の進路について
回答35
クリップ2
更新
2023/03/18
意見交換
受付中
JavaScriptの等号演算子と文字列について
回答6
クリップ4
更新
2023/03/21
Q&A
受付中
複数の入力欄の文字数を個別にカウントしてリアルタイムに表示する方法
回答1
クリップ0
更新
2023/03/21
Q&A
受付中
スプレッドシートで条件付き書式を貼り付ける際に、相対参照で対象セルを変化させる方法
回答1
クリップ0
更新
2023/03/12
同じタグがついた質問を見る
JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。
jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。