JavaScript 文字列は、テキストの格納や操作に使用します。
JavaScript 文字列は、"John Doe" のような一組の文字を格納します。
引用符で囲んだあらゆるテキストを文字列にできます。一重引用符または二重引用符を使用できます:
文字列を囲む引用符と一致しない限り、文字列の中で引用符を使うことができます:
var answer = "It's alright";
var answer = "He is called 'Johnny'";
var answer = 'He is called "Johnny"';
Try it Yourself »
文字列の長さは、組み込みプロパティの length にあります:
文字列は引用符で囲まなければならないため、JavaScript は次の文字列を誤って理解します:
var y = "We are the so-called "Vikings" from the north."
文字列は、"We are the so-called " で切断されます。
この問題を回避するための解決方法は、\ エスケープ文字を使用することです。
バックスラッシュ・エスケープ文字は、特殊文字を文字列の文字に変換します:
var x = 'It\'s alright';
var y = "We are the so-called \"Vikings\" from the north."
Try it Yourself »
エスケープ文字(\)は、文字列に他の特殊文字を挿入するためにも使用できます。
次の文字は、通常、バックスラッシュ記号付きのテキストとして挿入できる特殊文字です:
コード | 出力 |
---|---|
\' | 一重引用符 |
\" | 二重引用符 |
\\ | バックスラッシュ |
JavaScript では、次の 5 つのエスケープ文字は有効です:
コード | 出力 |
---|---|
\b | バックスペース |
\r | キャリッジリターン |
\f | フォームフィード |
\t | 水平タブ |
\v | 垂直タブ |
上記のエスケープ文字は、もともとは、タイプライタ、テレタイプ、およびファックスを制御するために設計されたものですので、 HTML では意味がありません。
読み易くするため、プログラマは 80 文字を超えるようなコード行を回避しようと考えています。
JavaScript 文が 1 行に収まらない場合は、演算子の後で改行するのが最適です:
バックスラッシュでテキスト文字列内のコード行を分割することもできます:
\ メソッドは推奨されるメソッドではありません。全般的なサポートはないかもしれません。
一部のブラウザは、\ 文字の後ろにスペースを許容していません。
文字列をより安全に分割する方法は、文字列の加算を使用することです:
バックスラッシュでコード行を分割することはできません:
通常、JavaScript 文字列はリテラルから作成するプリミティブな値です:var firstName = "John"
しかし、文字列はキーワード new を使用してオブジェクトとして定義することもできます: var firstName = new String("John")
var x = "John";
var y = new String("John");
// typeof x will return string
// typeof y will return object
Try it Yourself »
文字列をオブジェクトとして作成しないでください。 実行速度が遅くなります。
new キーワードはコードを複雑にします。 これにより予期しない結果が生じる可能性があります:
== 演算子を使用した場合、同じ文字列は等しくなります:
var x = "John";
var y = new String("John");
// (x == y) is true because x and y have equal values
Try it Yourself »
=== 演算子を使用した場合、=== 演算子は型と値の両方が等しくないと、同じ文字列でも等しくなりません。
var x = "John";
var y = new String("John");
// (x === y) is false because x and y have different types
(string and object)
Try it Yourself »
または、さらに悪い場合。オブジェクトを比較することはできません:
var x = new String("John");
var y = new String("John");
// (x == y) is false because x and y are different objects
Try it Yourself »
2 つの JavaScript オブジェクトを比較すると常に false が返されます。:
Exercise 1 » Exercise 2 » Exercise 3 » Exercise 4 »