JavaScript | 文字列を連結する方法

JavaScript JavaScript
スポンサーリンク

JavaScriptの文字列連結をやさしく理解する

はじめてのコードって、ちょっとした違いで結果がガラッと変わります。だからこそ、「なぜそうなるか」を腹落ちさせることが大事。ここでは、JavaScriptの「文字列をつなげる」仕組みを、手を動かしながらわかりやすく掘り下げます。


基本の「+」演算子

  • 役割: + は「数値の足し算」と「文字列の連結」の両方をします。
  • ルール: 式の中に文字列が1つでも入ると、連結モード(文字列としてつなげる)になります。
console.log('東京' + '駅');       // → 東京駅
console.log(2 + 3);              // → 5(足し算)
console.log('合計:' + 2 + 3);    // → 合計:23(文字列連結に切り替わった)
JavaScript

文字列に“巻き込まれる”しくみ

  • 自動変換: 文字列と連結すると、数値や真偽値も文字列に変換されます。
console.log(200 + '円');             // → 200円
console.log('結果は' + true + 'です'); // → 結果はtrueです
JavaScript
  • 変数も同じ: 変数の中身が数値でも、連結すると文字列になります。
let price = 200;
console.log('値段は' + price + '円'); // → 値段は200円
JavaScript

配列やオブジェクトを連結したら?

  • 配列はカンマ区切り: 配列を文字列にすると、要素がカンマで並びます。
let fruits = ['Orange', 'Apple', 'Grape'];
console.log('商品: ' + fruits); // → 商品: Orange,Apple,Grape
JavaScript
  • オブジェクトは[object Object]: そのままだと読みづらいので、JSON.stringifyを使うと見やすくなります。
let user = { name: 'Taro', age: 20 };
console.log('ユーザー: ' + user);                        // → ユーザー: [object Object]
console.log('ユーザー: ' + JSON.stringify(user));        // → ユーザー: {"name":"Taro","age":20}
JavaScript

演算の順序がすべてを決める

  • 左から順番: + は左から評価されます。最初に数値同士なら足し算、途中で文字列が登場すると、その先は連結になりがち。
console.log(100 + 80 + '円');     // → 180円(先に足し算が終わる)
console.log('値段は' + 100 + 80); // → 値段は10080(途中から文字列連結)
JavaScript
  • かっこで意図を固定: 計算してから連結したいときは () を使う。
console.log('値段は' + (100 + 80) + '円'); // → 値段は180円
JavaScript

よくある落とし穴と回避法

  • 数字をつなげたいのに足し算にならない? 文字列が混ざると連結になります。数値の合計を先に作ってから、文字列にするのが安全。
let a = 10, b = 20;
// 悪い例
console.log('合計:' + a + b);           // → 合計:1020
// 良い例
console.log('合計:' + (a + b));         // → 合計:30
JavaScript
  • 空文字が紛れ込むと… 未定義や空文字の連結で意図しない結果になりやすい。nullundefined をチェック。
let name;
console.log('こんにちは、' + name + 'さん'); // → こんにちは、undefinedさん
// 回避
console.log('こんにちは、' + (name ?? 'ゲスト') + 'さん'); // → こんにちは、ゲストさん
JavaScript

テンプレートリテラルでスッキリ

  • 記法: バッククォート `…`${...} を使うと、可読性が段違い。
let price = 180;
let item = 'りんご';
console.log(`商品名: ${item} / 値段: ${price}円`);
// → 商品名: りんご / 値段: 180円
JavaScript
  • 複雑な式もOK:
let taxRate = 0.1;
let base = 200;
console.log(`税込み: ${Math.round(base * (1 + taxRate))}円`);
// → 税込み: 220円
JavaScript

ハンズオン例題

例題1: レシートメッセージを作る

  • 目標: 商品名、数量、単価から「合計◯円です」を作る。
let item = 'バナナ';
let qty = 3;
let unit = 120;

// NG(意図が伝わりにくい)
console.log('合計' + qty * unit + '円です');

// OK(順序を明示)
let total = qty * unit;
console.log(`商品: ${item} / 数量: ${qty} / 合計: ${total}円です`);
JavaScript

例題2: ユーザー一覧文を出す

  • 目標: 配列の名前を「Aさん、Bさん、Cさん」の形にする。
let users = ['山田', '佐藤', '田中'];

// そのまま連結するとカンマ区切り
console.log('参加者: ' + users); // → 参加者: 山田,佐藤,田中

// 読みやすく「さん」付けに
let labeled = users.map(name => `${name}さん`).join('、');
console.log(`参加者: ${labeled}`); // → 参加者: 山田さん、佐藤さん、田中さん
JavaScript

例題3: 未入力を丁寧に扱う

  • 目標: 名前が未入力なら「ゲスト」を表示。
function greeting(name) {
  // null/undefined/空文字をまとめて扱う
  let safe = name?.trim() ? name.trim() : 'ゲスト';
  return `こんにちは、${safe}さん`;
}

console.log(greeting(''));        // → こんにちは、ゲストさん
console.log(greeting(' 太郎 '));  // → こんにちは、太郎さん
console.log(greeting());          // → こんにちは、ゲストさん
JavaScript

練習問題(自分の手で確かめる)

  1. 税計算メッセージを作る
    • 入力: price = 550, tax = 0.1
    • 出力例: 税込価格は605円です
    • ヒント: 合計を計算してから連結、またはテンプレートリテラル。
  2. ログ行を生成
    • 入力: level = 'INFO', message = '処理完了', time = '12:03'
    • 出力例: [12:03][INFO] 処理完了
    • ヒント: 文字列の並び順を意識して、かっこも含めて連結。
  3. 配列の最後に句点
    • 入力: words = ['今日は', '良い', '天気']
    • 出力例: 今日は 良い 天気。
    • ヒント: join(' ') と最後に + '。'、またはテンプレートで。

まとめの指針

  • 計算は先に終わらせてから連結する。
  • 未定義値は安全に置き換える(?? やチェック)。
  • 複雑になったらテンプレートリテラルで可読性を上げる。
  • 配列やオブジェクトは、そのまま連結せず整形してから使う。

もし「これってなんでこうなる?」って詰まったら、実際に1行ずつ出力して順番を確認してみて。自分の目で確かめるほど、理解は深く定着します。

タイトルとURLをコピーしました