回答編集履歴

4

厳密等価になっていなかったので修正

2018/10/23 04:00

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -1,14 +1,14 @@
1
1
  ```JavaScript
2
2
 
3
- if (aaa == xxx) {
3
+ if (aaa === xxx) {
4
4
 
5
5
  処理A;
6
6
 
7
- } else if (aaa == yyy) {
7
+ } else if (aaa === yyy) {
8
8
 
9
9
  処理B;
10
10
 
11
- } else if (aaa == zzz) {
11
+ } else if (aaa === zzz) {
12
12
 
13
13
  処理C;
14
14
 
@@ -62,15 +62,15 @@
62
62
 
63
63
  ```JavaScript
64
64
 
65
- if (比較元 == 比較対象A) {
65
+ if (比較元 === 比較対象A) {
66
66
 
67
67
  処理A;
68
68
 
69
- } else if (比較元 == 比較対象B) {
69
+ } else if (比較元 === 比較対象B) {
70
70
 
71
71
  処理B;
72
72
 
73
- } else if (比較元 == 比較対象C) {
73
+ } else if (比較元 === 比較対象C) {
74
74
 
75
75
  処理C;
76
76
 

3

演算子の優先順位について追記

2018/10/23 04:00

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -87,3 +87,55 @@
87
87
  質問者様のプログラムにあてはめてみれば分かるかと思います。
88
88
 
89
89
  ※質問者様は使用していませんが、defaultも一応説明のために追加しました。
90
+
91
+
92
+
93
+ ---
94
+
95
+
96
+
97
+ 条件式を結合するために`&&`や`||`を使用していますが、
98
+
99
+ これらは優先順位があり、`&&`が優先されます。
100
+
101
+ 例えば合格条件が「数学か理科が70点以上の人、かつ英語が90点以上の人」というものを
102
+
103
+ そのまま書いた場合は以下のようになりますが、
104
+
105
+ ```JavaScript
106
+
107
+ if (math >= 70 || science >= 70 && english >= 90) {
108
+
109
+ ```
110
+
111
+ これは`&&`が優先されるので以下のように括弧付けした書き方と同じになります。
112
+
113
+ ```JavaScript
114
+
115
+ if (math >= 70 || (science >= 70 && english >= 90)) {
116
+
117
+ ```
118
+
119
+ これは「数学が70点以上の人、もしくは理科が70点以上かつ英語が90点以上の人」が合格という
120
+
121
+ 最初の目的と違う判定になってしまいます。
122
+
123
+
124
+
125
+ 最初の合格条件は数学が80点取っていても英語が90点未満であれば不合格です。
126
+
127
+ が、この条件式では合格となってしまいます。
128
+
129
+
130
+
131
+ これを正しくするには以下のように括弧付けするようにします。
132
+
133
+ ```JavaScript
134
+
135
+ if ((math >= 70 || science >= 70) && english >= 90) {
136
+
137
+ ```
138
+
139
+
140
+
141
+ というわけで、書いたコードの条件文を見直してみましょう。

2

条件について追記

2018/10/23 03:56

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -17,3 +17,73 @@
17
17
  ```
18
18
 
19
19
  のような形で条件式と処理を追加していけばできますね。
20
+
21
+
22
+
23
+ ---
24
+
25
+
26
+
27
+ switch文は以下の構造になっています。
28
+
29
+ ```JavaScript
30
+
31
+ switch (比較元) {
32
+
33
+ case 比較対象A:
34
+
35
+ 処理A;
36
+
37
+ break;
38
+
39
+ case 比較対象B:
40
+
41
+ 処理B;
42
+
43
+ break;
44
+
45
+ case 比較対象C:
46
+
47
+ 処理C;
48
+
49
+ break;
50
+
51
+ default:
52
+
53
+ 処理D;
54
+
55
+ }
56
+
57
+ ```
58
+
59
+
60
+
61
+ これに対し、if文は以下のような書き方になります。
62
+
63
+ ```JavaScript
64
+
65
+ if (比較元 == 比較対象A) {
66
+
67
+ 処理A;
68
+
69
+ } else if (比較元 == 比較対象B) {
70
+
71
+ 処理B;
72
+
73
+ } else if (比較元 == 比較対象C) {
74
+
75
+ 処理C;
76
+
77
+ } else {
78
+
79
+ 処理D;
80
+
81
+ }
82
+
83
+ ```
84
+
85
+
86
+
87
+ 質問者様のプログラムにあてはめてみれば分かるかと思います。
88
+
89
+ ※質問者様は使用していませんが、defaultも一応説明のために追加しました。

1

元の文にdefaultがなかったので修正

2018/10/23 03:38

投稿

dice142
dice142

スコア5158

test CHANGED
@@ -1,14 +1,14 @@
1
1
  ```JavaScript
2
2
 
3
- if (xxx) {
3
+ if (aaa == xxx) {
4
4
 
5
5
  処理A;
6
6
 
7
- } else if (yyy) {
7
+ } else if (aaa == yyy) {
8
8
 
9
9
  処理B;
10
10
 
11
- } else {
11
+ } else if (aaa == zzz) {
12
12
 
13
13
  処理C;
14
14