JavaScript | 変数への値の代入と変数の初期化

JavaScript
スポンサーリンク

練習問題 ①:宣言と代入の違い

次のコードの出力結果を答えてください。

let x;
console.log(x);

x = 10;
console.log(x);
JavaScript

ヒントlet x; の時点では値はまだ入っていません。

✅ 解答と解説

undefined
10
JavaScript
  • let x; で変数を作るが、値を入れていないため undefined
  • x = 10; で初めて値が代入される

練習問題 ②:const のルール

次のコードは正しく動くでしょうか?
エラーになる場合はどこが問題か答えてください。

const y;
y = 5;
console.log(y);
JavaScript

✅ 解答と解説

→ ❌ エラーになります。
理由const は宣言と同時に初期化しなければならないため。

正しい書き方は:

const y;
y = 5;
console.log(y);
JavaScript

練習問題 ③:再代入できるか?

次のコードの出力結果を答えてください。

let a = 2;
a = 5;
console.log(a);

const b = 3;
b = 7;
console.log(b);
JavaScript

✅ 解答と解説

5
(エラー)
JavaScript
  • let は再代入OK → a は 5
  • const は再代入NG → エラー(Assignment to constant variable.

練習問題 ④:代入の順番

次のコードの出力結果を考えてみましょう。

let x = 3;
let y = x;
x = 7;

console.log(x);
console.log(y);
JavaScript

✅ 解答と解説

7
3
JavaScript
  • y = x; の時点で「x の値(3)」がコピーされる
  • x を変えても、y には影響しない(プリミティブ型のコピー)

練習問題 ⑤:参照型のコピー

次のコードの出力結果を考えてください。

let arr1 = [1, 2];
let arr2 = arr1;
arr2.push(3);

console.log(arr1);
console.log(arr2);
JavaScript

✅ 解答と解説

[1, 2, 3]
[1, 2, 3]
JavaScript
  • arr2 = arr1;同じ配列を参照しているため、片方を変更すると両方に影響します。

🌟おまけ(発展)

次のコードで arr1 を変更せずに arr2[3] を追加するにはどうすればいいでしょう?

let arr1 = [1, 2];
let arr2 = ???;
arr2.push(3);
JavaScript

✅ 解答と解説

let arr1 = [1, 2];
let arr2 = [...arr1]; // スプレッド構文でコピー
arr2.push(3);

console.log(arr1); // [1, 2]
console.log(arr2); // [1, 2, 3]
JavaScript

これらの問題を実際にブラウザで試すと理解がぐっと深まります。

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