回答編集履歴

1

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

2021/01/07 17:55

投稿

A_kirisaki
A_kirisaki

スコア2853

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