⊗jsPmCdScpN 135 of 505 menu

JavaScriptのif-else構文における変数スコープのニュアンス

変数スコープには、いくつかのニュアンスがあります。 例を用いてそれを確認しましょう。 条件文の外側で変数resをある値で宣言し、 条件文の内側でその値を別の値に変更してみます:

let res = 1; if (true) { res = 2; } console.log(res); // 2を表示

ご覧の通り、変数resは条件文内で変更されました。 しかし、条件文内でletを使って 変数resを宣言すると、状況は一変します:

let res = 1; if (true) { let res = 2; // letで変数を宣言 } console.log(res); // 2ではなく1を表示!

ここで重要なのは、条件文内でletを用いた変数宣言が、 ローカル変数resを作成したことです。

つまり、条件文の内側には一つの変数resが存在し、 外側には別の変数が存在するのです。 これは、条件文内で変数の値をコンソールに出力することで確認できます:

let res = 1; if (true) { let res = 2; console.log(res); // 2を表示 } console.log(res); // 1を表示

以下のコードの作者は、年齢が18歳に達しているかどうかを 確認しようとしました。しかし、このコードは年齢の値に関わらず、 コンソールにundefinedの値を出力します。 コード作者の誤りを修正してください。問題のコードは以下の通りです:

let age = 17; let adult; if (age >= 18) { let adult = true; } else { let adult = false; } console.log(adult);

以下のコードの作者は、年齢が18歳に達しているかどうかを 確認しようとしました。コードを確認した結果、 年齢が18歳以上の場合、変数adultに trueが代入される(正しい動作)ことがわかりました。 しかし、年齢が18歳未満の場合、 変数adultの値はundefinedになります。 コード作者の誤りを修正してください。

問題のコードは以下の通りです:

let age = 17; let adult; if (age >= 18) { adult = true; } else { let adult = false; } console.log(adult);

以下のコードの作者は、年齢チェックを行おうとしました。 しかし、このコードは年齢の値に関わらず、 コンソールにundefinedの値を出力します。 コード作者の誤りを修正してください。

問題のコードは以下の通りです:

let age = 17; let res; if (age >= 18) { if (age <= 23) { let res = '18から23まで'; } else { let res = '23より大きい'; } } else { let res = '18未満'; } console.log(res);

以下のコードの作者は、年齢チェックを行おうとしました。 しかし、このコードは年齢が18歳より大きい場合、 コンソールにundefinedの値を出力します。 コード作者の誤りを修正してください。

問題のコードは以下の通りです:

let age = 19; let res; if (age >= 18) { let res; if (age <= 23) { res = '18から23まで'; } else { res = '23より大きい'; } } else { res = '18未満'; } console.log(res);
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否