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
キーワードはコードを複雑にし、実行速度を遅くします。
文字列オブジェクトは予期しない結果を生むことがあります:
==
演算子を使用すると、x
とy
は等しいです:
let x = "John";
let y = new String("John");
しかし、===
演算子を使用すると、x
とy
は等しくありません:
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が返されます。