JQueryが普及している為、JavaScriptに$がある変数が登場すると可読性が下がると思っていますが、ソース内でみかけることがあります。参考になる記事を調べてみたのですが、目立つ。以外に何か使う理由はあるのでしょうか?
理由:PHP書いてる人がわかりやすくしたくて、つけちゃうなごり? など。
【参考】JavaScriptの変数名で最初の文字に「$」を付けるのは《本当に》アリなのか?
http://dtp.jdash.info/archives/51933758.html
宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
ECMAScript
既に指摘されている通り、ES3 まではドル記号($
)は機械的に生成されるコード中のみの使用を意図されていましたが、ES5.1 でこの規定は削除されました。
- 7.6 識別子 (Identifiers) - ECMA-262 3rd Edition
- 7.6 Identifier Names and Identifiers - ECMA-262 Edition 5.1
従って、ES5.1の実装向けのコードであれば、$
の使用に制限はありません。
jQuery と prototype.js
$
を使ったライブラリとして、jQuery と prototype.js があります。
ECMAScript 5 が策定されたのは2009年12月ですが、jQuery 及び prototype.js はそれより以前にリリースされた為、当時の jQuery 及び prototype.js は ES3 仕様に違反していました。
ES5 仕様で「ドル記号($
)は機械的に生成されるコード中のみの使用を意図される」の規定は削除され、それらのライブラリは ES 仕様に準拠したものとなりましたが、仕様が後追いで策定したと思われる状況です。
結局、ドル記号($)は使っても良いのか
ES3 策定当時に書いたコードには、「機械的に生成されるコード」を区別する為に $
を使用したコードがあると思われます。
仮にそのコード中に jQuery のコードが混在した場合、「機械的に生成したコード」と「jQuery のコード」の区別が難しくなります。
従って、「後方互換性を考慮するならば、$
は使用しない方が良い」という結論になります。
jQuery オブジェクトを区別する意図があるならば、「変数名の先頭に j
を付ける」でも良いわけですから、$
に拘る必要はないと考えます。
最も、公式の jQuery ドキュメントでは jQuery オブジェクトの変数名に $
を付けるテクニックが紹介されている為、jQuery 作者の主張を尊重するなら そちらに従う人もいるでしょう。
最終的には「旧来のESの流れ」と「jQuery 独自の文化」のどちらを尊重するか、という二択になると思われます。
私としては $ はjQueryだけに予約された文字ではないので、「jQuery === $」という固定観念から付ける変数名は健全な名前ではないと思います。
jQuery と prototype.js で $
が衝突したトラブルも「我こそが jQuery(prototype.js)である」という慢心から生まれた必然の出来事だと考えます。
$element
という名前は jQuery オブジェクトではない全く別のオブジェクトであっても良いのです。
$ はコードを書いた人が名前の統一性を考慮して命名すべきであって、一つのライブラリに過ぎない jQuery が占有して良い名前ではないと私は思います。
(余談ですが、Underscore.js や Lodash も同じ理由で好ましくない名前(_
)だと思っています。)
Re: EndoDaijiro さん
投稿2017/06/04 02:47
編集2023/02/01 00:54総合スコア18189
0
JQueryが普及している為、JavaScriptに$がある変数が登場すると可読性が下がると思っています
自分が書く場合は、逆に「jQueryオブジェクトを含む変数」を$
で始めることで、わかりやすくなるようにしています。
TypeScriptなどを使いだせば「変数に何が入っているか」も型で管理できるようになるのですが、純粋なJavaScriptではそうも行かないので、変数名で管理することもあります。
投稿2017/06/02 02:26
総合スコア145930
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
2000年までの仕様(ECMAScript 262 3rd edition)には、「機械的に生成されたコードでのみ使用」と書いてあります。
http://www-archive.mozilla.org/js/language/E262-3.pdf
The dollar sign is intended for use only in mechanically generated code.
この文はのちの 5th edition ではなくなっているのですが。
おそらく、prototype.js やら jQuery などで広く使われてしまったので制限を撤廃したのだろうと思います。
こういう経緯があり気持ち悪いので、個人的には積極的には使わないかなと思います。
投稿2017/06/02 02:59
総合スコア13749
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。