練習問題 ①:宣言と代入の違い
次のコードの出力結果を答えてください。
let x;
console.log(x);
x = 10;
console.log(x);
JavaScriptヒント:let x; の時点では値はまだ入っていません。
✅ 解答と解説
undefined
10
JavaScriptlet x;で変数を作るが、値を入れていないためundefinedx = 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
(エラー)
JavaScriptletは再代入OK →aは 5constは再代入NG → エラー(Assignment to constant variable.)
練習問題 ④:代入の順番
次のコードの出力結果を考えてみましょう。
let x = 3;
let y = x;
x = 7;
console.log(x);
console.log(y);
JavaScript✅ 解答と解説
7
3
JavaScripty = 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]
JavaScriptarr2 = 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これらの問題を実際にブラウザで試すと理解がぐっと深まります。
