edubun
日本語

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

"5" + 3 は 8 ではなく "53" になります。+ の片側が文字列だと、JavaScript は数を足すのではなく、文字をつなげます。

プログラムの中の文字

名前、メッセージ、住所、パスワード、そして Web ページ全体も、すべて文字です。JavaScript は文字を文字列として保存します。文字列は、引用符ではさんだ文字の並びです。JavaScript では三種類の引用符が使えます。二重引用符 "like this"、一重引用符 'like this'、バッククォート `like this` です。はじめの二つは同じように働きます。バッククォートはテンプレートリテラルを作ります。テンプレートリテラルには、あとで説明する特別な力があります。

文字の中にどちらかの引用符がふくまれるときは、もう一方の引用符で囲みます。"It's late" が使えるのは、アポストロフィが二重引用符ではないからです。引用符の前にバックスラッシュを置いて、「これは文字の一部です」と示すこともできます。'It\'s late' です。バックスラッシュのあとに n を続けた は、文字列の中の改行を意味します。

長さと位置

どの文字列も、自分が何文字あるかを知っています。"JavaScript".length は 10 です。それぞれの文字にはインデックスと呼ばれる位置もあり、数えはじめは 1 ではなく 0 です。ですから "JavaScript" では、インデックス 0 が J、インデックス 4 が S で、最後のインデックスは長さより一つ少ない 9 です。一文字だけを読むには角かっこを使います。word[0] です。0 から数えるのは最初は変に感じますが、ほとんどのプログラミング言語はこう数えます。配列でもまた出てきます。

const word = "JavaScript";
console.log(word.length);                // 10
console.log(word[0]);                    // J
console.log(word[word.length - 1]);      // t

便利な文字列のメソッド

文字列には、メソッドと呼ばれる組みこみの道具がついています。文字列のあとにドットを書いて呼び出します。toUpperCase() と toLowerCase() は、大文字または小文字にしたコピーを返します。includes("Script") は、その文字が中にあるかどうかで true か false を答えます。slice(0, 4) はインデックス 0 からインデックス 4 の手前までの文字を返します。"JavaScript" なら "Java" です。trim() は両端の空白を取りのぞくので、人が入力したものを整えるのに便利です。どれも元の文字列は変えません。JavaScript の文字列はその場で書きかえることができず、メソッドはいつも新しい文字列を返します。

+ で文字列をつなげる

+ 演算子は文字列を端と端でつなげます。これを連結と呼びます。"Hello, " + "Mina" は "Hello, Mina" になります。空白は自動では入らないので、自分で引用符の中に入れましょう。ここに、冒頭で見た落とし穴があります。+ のどちらか片側が文字列だと、JavaScript はもう一方も文字列に変えてからつなげます。"5" + 3 は "53" です。ほかの算術演算子は文字をつなげないので、"5" * 2 は "5" を数に変えて 10 を返します。数字が入った文字列を本当の数に変えるには、Number("5") を使います。

テンプレートリテラル

+ で文を組み立てると、すぐにごちゃごちゃになります。name + " is " + age + " years old." では、空白と引用符に気をつかいます。バッククォートで書くテンプレートリテラルなら、${ } で値を文字の中に直接入れられます。波かっこの中は式として評価され、その結果が文字列の中に置かれます。テンプレートリテラルは何行にもわたって書くこともできます。

const name = "Mina";
const age = 14;
console.log(`${name} is ${age} years old.`);   // Mina is 14 years old.
console.log(`Next year: ${age + 1}`);           // Next year: 15

例題。店の値札に "3 apples cost 4.5" と表示したいとします。const n = 3, price = 1.5; とすれば、テンプレート `${n} apples cost ${n * price}` で一行で書けます。かけ算は波かっこの中で行われます。

文字をバッククォートで囲み、値ごとにドル記号と波かっこで囲む:`Hi ${name}`

string引用符またはバッククォートではさんだ文字
インデックス文字の位置。0 から数える
.length文字列が何文字あるか
連結+ で文字列をつなげる
テンプレートリテラル${ } の差しこみ口を使うバッククォートの文字列
メソッドドットで呼び出す道具:word.toUpperCase()
slice(a, b)インデックス a から b の手前までの文字
エスケープ文字列の中の改行
  1. 何が表示されますか?
    console.log("5" + 3);
  2. 何が表示されますか?
    console.log("5" * 3);
  3. 何が表示されますか?
    console.log("cat".length);
  4. 何が表示されますか?
    const s = "Seoul";
    console.log(s[1]);
  5. 何が表示されますか?
    console.log("JavaScript".slice(4, 10));
  6. 何が表示されますか?
    const a = 2;
    const b = 3;
    console.log(`${a} + ${b} = ${a + b}`);
    • 2 + 3 = 5
    • ${a} + ${b} = ${a + b}
    • 2 + 3 = 23
  7. 何が表示されますか?
    console.log("Hi" + " " + "there".toUpperCase());
  8. 何が表示されますか?
    console.log("banana".includes("nan"));
    • true
    • false
  9. 何が表示されますか?
    console.log(1 + 2 + "3");
  10. 何が表示されますか?
    console.log(Number("7") + 1);
  11. 長さが 6 の文字列の最後のインデックスはいくつですか?
ポイント
  • 文字列には "double"、'single'、`backtick` の引用符を使う。
  • インデックスは 0 から始まり、最後のインデックスは length - 1。
  • toUpperCase、includes、slice、trim などのメソッドは新しい文字列を返す。
  • + の片側が文字列なら、+ は文字をつなげる。
  • テンプレートリテラル:`text ${expression} text`
このコースの出典 (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

確認日: 2026-10-17