JavaScriptにおけるif-else内の変数のスコープ

簡単のために、常に真となる 条件を用意しましょう:

javascriptif (true) {
  
}

次のコードを見てみましょう:

javascriptif (true) {
  let res = '!';
}

console.log(res);

ご覧の通り、変数 res には 値 '!' が代入されるはずです。しかし、 このコードを実行すると、コンソールに エラーが表示されます!

これは、中括弧 { } の内側で宣言された変数は、 その中括弧の内側でのみ参照可能であり、外側からは 見えないためです。専門的には、 これは 変数のスコープ についての話です。

中括弧内で宣言された変数のスコープは、 その中括弧内だけであると言えます。しかし、 中括弧の外側で宣言された変数は、 その内側でも外側でも参照可能です:

javascriptlet res; // 変数は外側で宣言

if (true) {
  res = '!';
}

console.log(res); // '!' を表示

次の例では、変数 res に 条件に応じて値 1 または 2 を 代入しています:

javascriptlet num = 5;

if (num >= 0) {
  let res = 1;
} else {
  let res = 2;
}

console.log(res);

しかし、このコードを実行すると、コンソールに エラーが表示されます。今ではおわかりのように、 原因は変数の可視性です。問題を解決するために、 条件の外側で変数を宣言しましょう:

javascriptlet test = true;
let res; // 条件の外側で変数を宣言

if (test) {
  res = 1;
} else {
  res = 2;
}

console.log(res); // 1 を表示
Задание 1

以下のコードの作者は、年齢が 18 歳に 達しているかどうかを確認しようとしました。 しかし、コードは動作しません。 作者のコードの誤りを修正してください。問題のコードはこちらです:

javascriptlet age = 17;

if (age >= 18) {
  let adult = true;
} else {
  let adult = false;
}

console.log(adult);