このエントリの賞味期限は 2014-04-01 です。
JavaScript の文字列は、ダブルクォーテーションまたはシングルクォーテーションで表現可能です。
JavaScriptの言語仕様的に、どちらを選択しても機能的な違いはありませんが、ユーザによって扱われ方に違いがあるようです。
では、どのような扱われ方の違いがあるのかを見て行きましょう。
まずは、JavaScript の仕様のおさらいから。
ダブルクォーテーションで開始したJavaScript文字列の中に、バックスラッシュ記号でエスケープしたダブルクォーテーションを含める事ができます。
同様に、シングルクォーテーションで開始した文字列の中にエスケープしたシングルクォーテーションを含むことができます。
// ダブルクォーテーションで開始した文字列の中にエスケープ記号つきのダブルクォーテーションを含める事ができる
var jsString = " hello \"world\" ";
// シングルクォーテーションで開始した文字列の中にエスケープ記号つきでシングルクォーテーションを含める事ができる
var jsString = ' hello \'world\' ';
ダブルクォーテーションの中にシングルクォーテーションを含める場合と、
シングルクォーテーションの中にダブルクォーテーションを含める場合はエクケープは不要です。
// シングルクォーテーションの中にダブルクォーテーションを含める
var jsString = ' hello "world" ';
JPキーボードでタイプしやすいのは(恐らく)ダブルクォーテーションです。 USキーボードではシングルクォーテーションです。
JSONのキーに利用できるのはダブルクォーテーションです。シングルクォーテーションはエラーになります。
{
"key": "value"
}
{
'key': 'value' // ERROR
}
通常、HTML属性の記述はダブルクォーテーションが好まれます。
<a href="#"></a>
属性をダブルクォーテーションで記述する都合から、
JavaScript においても、文字列をシングルクォーテーションで表記するのが良いという説があります。
シングルクォートで始まる文字列の中に、ダブルクォートを埋め込んでもエスケープは不要です。
var jsString = 'hello world';
var htmlFragment = '<a href="#">{{hoge}}</a>';
反対に、JavaScript文字列はダブルクォーテーションで囲い、
テンプレート的用法の時にだけ、シングルクォートで囲うのが良いという説があります。
この方法だと、先頭一文字を見てシングルクォートならテンプレートと認識できます。
var jsString = "hello world";
var htmlFragment = '<a href="#">{{hoge}}</a>'; // テンプレート的用法らしい
印刷物では慣例によりダブルクォーテーションが好まれます。
こんなところでしょうか。