文字列

二重引用符(")、一重引用符(')、バッククォート(`)で囲まれた文字列(文字、数字、記号など)は、文字列プリミティブです。このコースでは、文字列の例をいくつか見てきました。前のモジュールの console.log のインスタンスには文字列プリミティブが含まれていました。

console.log( "Hello, World." );
> Hello, World.

"Hello, World." は文字列プリミティブです。単一引用符またはバッククォートを使用しても同じ結果が得られます。

console.log( 'Hello, World.' );
> Hello, World.

console.log(`Hello, World.`);
> Hello, World.

引用符で囲まれた一連の文字は、文字列リテラルと呼ばれます。二重引用符と単一引用符は同じ動作をします。一方を文字列自体の文字として含めることができます。

console.log( "I'm a string." );
> I'm a string.

console.log( '"A string," I said.' );
> "A string," I said.

文字列内の同じ囲み文字のインスタンスが文字列を「閉じる」と、エラーが発生する可能性があります。

console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list

これを回避するには、バックスラッシュ(\)を使用して文字をエスケープします。

console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.

文字列オブジェクト

関数として呼び出されると、String オブジェクトは指定された値を文字列リテラルに強制変換します。

let myString = String( 10 );

myString
> "10"

typeof myString
> string

プロトタイプ継承で詳しく説明されているように、String オブジェクトをコンストラクタとして使用する必要はほとんどありません。文字列リテラルではなく、指定された値を含む文字列オブジェクトを作成します。このオブジェクトには、String オブジェクトですでに提供されているメソッドとプロパティも含まれます。

let stringObj = new String( "My new string." );

typeof stringObj
> object

stringObj
> String { "My new string." }

連結

数値ではなく文字列のコンテキストで使用する場合、1 つのプラス記号(+)は連結演算子として機能し、複数の文字列値を 1 つの文字列に結合します。

console.log( "My" + " string." );
> My string.

文字列リテラルとテンプレート リテラル

文字列プリミティブの作成には、一重引用符、二重引用符、バッククォートを使用できます。ただし、バッククォートを使用してテンプレート文字列(テンプレート文字列とも呼ばれます)を指定することもできます。単一引用符または二重引用符で作成された文字列リテラルとは異なり、テンプレート文字列では複数行の文字列と文字列の補間を使用できます。

const myString = "This
is a string.";
> Uncaught SyntaxError: "" string literal contains an unescaped line break

const myString = `This
is a string.`;

console.log( myString );

> This
is a string.

テンプレート文字列には、ドル記号と中かっこ(${})でマークされたプレースホルダ式を含めることができます。これらのプレースホルダはデフォルトで「補間」されます。つまり、式の結果が最終的な文字列のプレースホルダに置き換えられます。

console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.

テンプレート文字列をカスタム関数に渡して、タグ付きテンプレートを作成できます。これは、単一のテンプレート文字列を一連の引数として使用し、プレースホルダを作成者の定義したロジックに基づいて入力する関数呼び出しです。

タグ関数の最初の引数には文字列値の配列が含まれ、残りの引数はプレースホルダを定義します。この文字列値の配列は、テンプレート文字列に含まれる各プレースホルダで「分割」することで作成されます。配列の最初の要素には最初のプレースホルダまでの文字が含まれ、2 番目の要素には最初のプレースホルダと 2 番目のプレースホルダの間の文字が含まれます。各プレースホルダは、関連するプレースホルダを持つスタンドアロン値としてタグ関数に渡されます。

const myNoun = "template literal";

function myTagFunction( myStrings, myPlaceholder ) {
    const myInitialString = myStrings[ 0 ];
    console.log( `${ myInitialString }modified ${ myPlaceholder }.` );
}

myTagFunction`I'm a ${ myNoun }.`;
> "I'm a modified template literal."

理解度を確認する

文字をエスケープするには、どの文字を使用すればよいですか?

バックスラッシュ(
二重引用符("
スラッシュ(/

連結に使用される文字はどれですか。

+
&
.