状態:終了
閲覧数:1,895
投稿日:2014-05-21
更新日:2014-05-21
結論
JavaScriptでは文字列を「ダブルクォーテーション」ではなく「シングルクォーテーション」で囲う
推奨
'文字列'
非推奨"文字列"
※言語仕様としては何れも正しい
・処理速度も同じ
「シングルクォーテーション」が推奨されている理由
誰が推奨してるの?
「シングルクォーテーション」で文字列を囲うことを誰が推奨してるの?
・「Google JavaScript Style Guide」の中で、「 " 」 よりも 「 ' 」 を使うことが推奨されている
Google JavaScript Style Guide とは?
・Googleが公開しているJavaScriptのコーディングスタイルガイド(コーディング規約/コーディングルール)
・同社自身もこのスタイルに従って開発を行っているとされる
原文
Strings
▽Prefer ' over "
For consistency single-quotes (') are preferred to double-quotes ("). This is helpful when creating strings that include HTML:
▽Prefer ' over "
For consistency single-quotes (') are preferred to double-quotes ("). This is helpful when creating strings that include HTML:
var msg = 'This is some HTML';
日本語訳
文字列
▽" よりも ' を使ってください.
ダブルクオートよりもシングルクオートを使ってください. そのほうが HTML を含む文字列を作る際に便利です.
▽" よりも ' を使ってください.
ダブルクオートよりもシングルクオートを使ってください. そのほうが HTML を含む文字列を作る際に便利です.
var msg = 'なんらかの HTML';
一貫性の問題
具体例
innerHTMLプロパティで、指定HTML要素の「内容」を書き換える場合
※logo はHTML要素の一意の ID を表す文字列
シングルクオーテーション利用
・問題なし
<div id="logo"></div>
document.getElementById('logo').innerHTML = '<img src="sitelogo.jpg" alt="サイトロゴ">JavaScript0';
ダブルクオーテーション利用
・エスケープ処理が必要
<div id="logo"></div>
document.getElementById("logo").innerHTML = "<img src=\"sitelogo.jpg\" alt=\"サイトロゴ\">JavaScript0";
ダブルクオーテーション利用
・あるいは、HTML属性値を、シングルクォーテーションへ書き換える必要がある
<div id="logo"></div>
document.getElementById("logo"').innerHTML = "<img src='sitelogo.jpg' alt='サイトロゴ'>JavaScript0";
つまりどゆこと?
・「シングルクォーテーション」が推奨されている理由は、HTML を含む文字列を作る際に便利だから
・「統一性」「一貫性」を保つため、「シングルクォーテーション」使用が推奨されている
HTML属性値を「"(ダブルクォーテーション)」で囲むことが推奨されている理由は?
前提
HTML属性値を「"(ダブルクォーテーション)」で囲むことが推奨されている理由は?
・上記結論は、HTML属性値を「"(ダブルクォーテーション)」で囲むことを前提としている
・もし仮にこの前提が間違っていたなら、結論も当然違ったものとなる
差異はない
HTML属性値
・調査した結果、仕様的には「"(ダブルクォーテーション)」「'(シングルクォーテーション)」、どちらで囲っても良いことが判明
つまり?
「JavaScript文字列」「HTML属性値」
・何れも、「"(ダブルクォーテーション)」「'(シングルクォーテーション)」、どちらで囲っても良い
・「自由過ぎるわ。どっちかに統一してよ、仕様で」と思うのは私だけ?
ダブルクォーテーション、シングルクォーテーションが紛らわしいと感じる理由
言語間差異
ダブルクォーテーション、シングルクォーテーションが紛らわしいと感じる理由
・ダブルクォーテーション、シングルクォーテーションが紛らわしいと感じる理由の一つとして、言語によって異なる挙動を示す、ということが挙げられる
PHP
シングルクォーテーションの取り扱い
・シングルクォーテーションで括れば 変数 は展開されない
・ただの文字列として取り扱うので、処理速度も速くなる
SQL
文字列
・ダブルクォーテーション、シングルクォーテーション、どちらで囲っても良い
・SELECT "ABC" →文字列の"ABC"と解釈される
・SELECT 'ABC' →文字列の'ABC'と解釈される
・SELECT ABC →ABCは、表名や列名と解釈される
数値
・囲まない
・但し、MySQLでは独自仕様として数値を「'」で囲むことが可能(RDBMS標準ではないMySQLだけの独自仕様)