質問するログイン新規登録

回答編集履歴

1

変数スコープについて追記

2021/01/07 17:55

投稿

A_kirisaki
A_kirisaki

スコア2853

answer CHANGED
@@ -1,3 +1,23 @@
1
1
  **一刻も早く `var` をやめて `let` と `const` に置き換えろ**。
2
2
 
3
- あと変数のスコープは `if` ブロックの中で閉じています。`if` ブロックの中で宣言した変数は `if` ブロックの中でしか通用しません。
3
+ あと変数のスコープは `if` ブロックの中で閉じています。`if` ブロックの中で宣言した変数は `if` ブロックの中でしか通用しません。
4
+
5
+ 追記:
6
+ 「変数のスコープはブロックの中で閉じている」というよりは「変数宣言はブロックの中で閉じている」と言ったほうが適切でしたね。なので `nowQuiz` についての説明は以上です。次に正解の記録ですが、「`if` の外に変数があればよい」ので
7
+ ```JavaScript
8
+ ...
9
+ let ans = 0
10
+ if(chooseOperator == 0){//足し算
11
+ ans = num1 + num2
12
+ }else if(chooseOperator == 1){//引き算
13
+ ans = num1 - num2
14
+ }else if(chooseOperator == 2){//掛け算
15
+ ans = num1 * num2
16
+ }else if(chooseOperator == 3){//割り算
17
+ ans = Math.floor(num1 / num2) //整数部分のみ
18
+ }
19
+ ...
20
+ ```
21
+ とすれば問題なく正解をキャッチできます。宣言は外にありますから `let ans` に代入することが出来ます。
22
+
23
+ `var` は変数のスコープを破壊する厄介者です。**一刻も早く使用をやめて `let` と `const` に乗り換えてください**。