Skip to content

Instantly share code, notes, and snippets.

@uupaa
Created September 24, 2013 13:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uupaa/6684665 to your computer and use it in GitHub Desktop.
Save uupaa/6684665 to your computer and use it in GitHub Desktop.
string and quote

このエントリの賞味期限は 2014-04-01 です。

JavaScript の文字列は、ダブルクォーテーションまたはシングルクォーテーションで表現可能です。

JavaScriptの言語仕様的に、どちらを選択しても機能的な違いはありませんが、ユーザによって扱われ方に違いがあるようです。

では、どのような扱われ方の違いがあるのかを見て行きましょう。

文字列の中にクォーテーションを含める

まずは、JavaScript の仕様のおさらいから。

ダブルクォーテーションで開始したJavaScript文字列の中に、バックスラッシュ記号でエスケープしたダブルクォーテーションを含める事ができます。
同様に、シングルクォーテーションで開始した文字列の中にエスケープしたシングルクォーテーションを含むことができます。

// ダブルクォーテーションで開始した文字列の中にエスケープ記号つきのダブルクォーテーションを含める事ができる
var jsString = " hello \"world\" ";
// シングルクォーテーションで開始した文字列の中にエスケープ記号つきでシングルクォーテーションを含める事ができる
var jsString = ' hello \'world\' ';

ダブルクォーテーションの中にシングルクォーテーションを含める場合と、
シングルクォーテーションの中にダブルクォーテーションを含める場合はエクケープは不要です。

// シングルクォーテーションの中にダブルクォーテーションを含める
var jsString = ' hello "world" ';

キーボードによるバイアス

JPキーボードでタイプしやすいのは(恐らく)ダブルクォーテーションです。 USキーボードではシングルクォーテーションです。

JSONによるバイアス

JSONのキーに利用できるのはダブルクォーテーションです。シングルクォーテーションはエラーになります。

{
  "key": "value"
}
{
  'key': 'value' // ERROR
}

HTML属性によるバイアス

通常、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>'; // テンプレート的用法らしい

視認性と慣例によるバイアス

印刷物では慣例によりダブルクォーテーションが好まれます。

こんなところでしょうか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment