「JavaScript/制御構造」の版間の差分
削除された内容 追加された内容
節加筆 for ... in / for ... of / for await... of |
|||
5 行
<source lang="javascript">
if ( n < 0 ) {
21 行
== if-else ==
'''[[w:if文|if文]]'''(イフぶん、''if statement'')は「もし〜ならば」を表す制御構文(条件構文)です。
if文 <source lang="javascript">
if ( n < 0 ) {
31 ⟶ 32行目:
</source>
if文のあとに'''else
<source lang="javascript">
if ( n < 0 ) {
44 ⟶ 45行目:
</source>
if文とelse
<source lang="javascript">
if ( n < 0 ) {
60 ⟶ 61行目:
</source>
このプログラムは''n'' < 0ならば「負の数」、そうでなく''n'' > 0ならば「正の数」、そうでもないならば「0」と表示します。else ifという部分に注目してください。何通りもの条件で処理を分岐したい場合は、このelse ifを何個も増やしていくことになります。if文やelse
<source lang="javascript">
if ( n < 0 )
76 ⟶ 77行目:
<source lang="javascript">
alert( n < 0 ? "負の数"
91 ⟶ 92行目:
</source>
しかし、JavaScript では「0以外にも falsy な値がある」(例えば "" 、 !"" === true は真になる)ので上記のC言語流のブールコンテキストのイデオムは使えません。
JavaScriptでは''n''が0に等しいかどうかは ''n'' === 0 のように ===(厳密比較演算子)を使います。
=== は==(比較演算子)とは異なり暗黙の型変換は行われず厳密に(この場合は 0 と)等しいかを評価します。
* '''例題'''
97 ⟶ 102行目:
* '''解答'''
if-else
<source lang="javascript">
138 ⟶ 143行目:
alert( ( n % 2 ? "奇"
: "偶" ) + "数" );
</source>
または
<source lang="javascript">
alert( "偶奇"[n % 2] + "数" );
</source>
など。
=== if-else 文の構文===
<source lang="js">
if (条件式)
文1
[else
文2]
</source>
{{code|[}}から{{code|]}}までは省略可能を意味し、この場合は「else節は省略可能」を意味します。
== switch ==
'''[[w:switch文|switch文]]'''(スイッチぶん、''switch statement'')は、if-else
<source lang="javascript">
157 ⟶ 176行目:
else if ( keyCode == 40 ) {
alert("↓");
}
else {
alert("?");
}
</source>
176 ⟶ 198行目:
alert("↓");
break;
default:
alert("?");
}
</source>
182 ⟶ 206行目:
<source lang="javascript">
alert( { 37: "←", 38: "↑", 39: "→", 40: "↓" }[keyCode] || "?" );
</source>
=== switch 文の構文===
<source lang="js">
switch (式) {
case 値1 :
文1
case 値2 :
文2
...
case 値n :
文n
[default :
文x]
</source>
switch文に与えられた式に一致するcase句の値をルックアップし(比較は厳密比較演算子 === による)、対応する文が実行され'''break文などの中断制御文が見つからない限り次の文が実行されます'''。
== while ==
189 ⟶ 228行目:
<source lang="javascript">
while ( i < 10 ) {
alert(i);
205 ⟶ 244行目:
<source lang="javascript">
do {
alert(i);
213 ⟶ 252行目:
== for ==
'''[[w:for文|for文]]'''(フォー文、''for statement'')は、
<source lang="javascript">
for (
alert(i);
}
</source>
たとえば、配列の要素を1つずつ取り出して処理をするような場合はfor文を使います。
227 ⟶ 266行目:
<source lang="javascript">
for (
alert( array[i] );
}
236 ⟶ 275行目:
<source lang="javascript">
for (
alert( array[i] );
</source>
244 ⟶ 283行目:
<source lang="javascript">
for (
;
</source>
265 ⟶ 304行目:
== for ... of ==
for ... of 文は、
<source lang="javascript">
const ary = [..."XYZ"];
281 ⟶ 320行目:
<source lang="javascript">
async function* asyncShift() {
for (let i = 1; i < 2 ** 16; yield i <<= 3)
;
}
(async function() {
for await (
console.log(num);
}
302 ⟶ 341行目:
<source lang="javascript">
for (
if ( i == 5 )
break;
313 ⟶ 352行目:
<source lang="javascript">
for (
if ( i % 3 )
continue;
325 ⟶ 364行目:
<source lang="javascript">
LOOP:
for (
for (
if ( y == 5 )
break LOOP;
335 ⟶ 374行目:
== その他の制御文 ==
<!-- with文が制御構造であるかは疑問、非推奨で有ることを強調するために残した。 -->
=== with文 ===
曖昧さを持ち込むため'''with 文の使用は推奨されない'''。
また、strictモードでは SyntaxError となる。
with文の用途は、実際のコードを見ると良い。次の2つの関数は同じ意味である。
360 ⟶ 400行目:
これは Pascal などの言語から採用されたものである。
with は、with により修飾名が省略されたことにより識別子に曖昧さを持ち込む事で、意図しないプロパティが使われるなど問題を生じることが知られており、'''with 文の使用は推奨されない'''。
また、strictモードでは SyntaxError となる。
<!-- with 文以外は、文ではなく「演算子」。「演算子」「式」「文」の違いをしっかり理解しましょう。
|