JavaScript 文字列

文字列はテキストを格納するために使います。

文字列は引用符で囲まれて書かれます。

引用符の使用

JavaScriptの文字列は、引用符内に0文字以上の文字が入ります。


let text = "John Doe";

シングルクォートまたはダブルクォートを使用できます。


let carName1 = "Volvo XC60";  // ダブルクォート
let carName2 = 'Volvo XC60';  // シングルクォート

シングルクォートとダブルクォートで作成した文字列は同じです。

引用符を文字列内に含めることもできますが、周囲の引用符とは異なる必要があります。


let answer1 = "It's alright";
let answer2 = "He is called 'Johnny'";
let answer3 = 'He is called "Johnny"';

テンプレート文字列

テンプレート文字列はES6(JavaScript 2016)で導入されました。

テンプレート文字列はバッククォートで囲まれた文字列です(This is a template string)。

テンプレート文字列では、シングルクォートやダブルクォートを文字列内に含めることができます。


let text = `He's often called "Johnny"`;

テンプレート文字列はInternet Explorerではサポートされていません。

文字列の長さ

文字列の長さを取得するには、組み込みのlengthプロパティを使用します。


let text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let length = text.length;

エスケープ文字

JavaScriptでは文字列は引用符で囲まれる必要があるため、以下のような文字列は誤解されます:


let text = "We are the so-called "Vikings" from the north.";

この問題を解決するには、バックスラッシュのエスケープ文字を使用します。

バックスラッシュのエスケープ文字(\)は特殊文字を文字列として扱います:

コード 結果 説明
\' シングルクォート
\" ダブルクォート
\\ \ バックスラッシュ


let text = "We are the so-called \"Vikings\" from the north.";
let text = 'It\'s alright.';
let text = "The character \\ is called backslash.";

他にもJavaScriptでは6つのエスケープシーケンスが有効です:

コード 結果
\b バックスペース
\f フォームフィード
\n 改行
\r キャリッジリターン
\t 水平タブ
\v 垂直タブ

これらの6つのエスケープ文字は、タイプライターやテレタイプ、ファクス機の制御に使用されましたが、HTMLでは意味をなしません。

長い行の改行

可読性のために、プログラマーはしばしば長いコード行を避けたいと考えます。

ステートメントを分割する安全な方法は、演算子の後で行うことです:


document.getElementById("demo").innerHTML =
"Hello Dolly!";

文字列を分割する安全な方法は、文字列の追加を使用することです:


document.getElementById("demo").innerHTML = "Hello " +
"Dolly!";

テンプレート文字列

テンプレート文字列はES6(JavaScript 2016)で導入されました。

テンプレート文字列はバッククォートで囲まれた文字列です(This is a template string)。

テンプレート文字列は複数行の文字列を許可します:


let text =
`The quick
brown fox
jumps over
the lazy dog`;

テンプレート文字列はInternet Explorerではサポートされていません。

JavaScriptの文字列としてのオブジェクト

通常、JavaScriptの文字列はリテラルから作成される原始値です:


let x = "John";

しかし、文字列はキーワードnewを使ってオブジェクトとしても定義できます:


let y = new String("John");


let x = "John";
let y = new String("John");

文字列オブジェクトを作成しないでください。

newキーワードはコードを複雑にし、実行速度を遅くします。

文字列オブジェクトは予期しない結果を生むことがあります:

==演算子を使用すると、xyは等しいです:


let x = "John";
let y = new String("John");

しかし、===演算子を使用すると、xyは等しくありません:


let x = "John";
let y = new String("John");

x==y)はtrueでしょうか? falseでしょうか?


let x = new String("John");
let y = new String("John");

x===y)はtrueでしょうか? falseでしょうか?


let x = new String("John");
let y = new String("John");

答えはfalseです。2つのJavaScriptオブジェクトを比較すると常にfalseが返されます。