「JavaScript/制御構造」の版間の差分
削除された内容 追加された内容
リファクタリング |
加筆 |
||
1 行
{{Nav}}
'''[[w:制御構造|制御構造]]'''(せいぎょこうぞう、''control flow'')とは、
== 概要 ==
8 行
let n = 0;
if (
}
else if (
}
else {
}
</source>
23 行
== if-else ==
'''[[w:if文|if文]]'''(イフぶん、''if statement'')は「もし〜ならば」を表す制御構文(条件構文)です。
if文では{{code|(
<source lang="javascript">
let n = -1;
if (
}
</source>
if文のあとに'''else節'''(エルスせつ、''else clause'')を置くと、else節の文はif文の条件が [[JavaScript/falsy|falsy]] であるときのみ実行されます。次のプログラムは、''n'' < 0(''n''が0より小さい)という条件が真であれば「負の数」、さもなくば(''n''が0以上ならば)「自然数」と表示します
<source lang="javascript">
let n = 0;
if (
}
else {
}
</source>
if文とelse節をあわせてif
<source lang="javascript">
let n = 0;
if (
}
else if (
}
else {
}
</source>
67 行
let n = 0;
if (
else if (
else
</source>
80 行
let n = 0;
: n > 0 ? "正の数"
: "0"
</source>
88 行
<source lang="javascript">
if (
// たどりつけない
}
</source>
他の言語(例えばC言語)では、''n''が0に等しいかどうかは <source lang="c" inline>if (
しかし、JavaScript では「0以外にも falsy な値がある」(例えば "" 、 !"" === true は真になる)ので上記のC言語流のブールコンテキストのイデオムは使えません。
103 行
* '''解答'''
if
<source lang="javascript">
if (
}
else {
}
</source>
117 行
<source lang="javascript">
if (
}
else {
}
</source>
128 行
<source lang="javascript">
: "奇数"
</source>
135 行
<source lang="javascript">
: "偶数"
</source>
142 行
<source lang="javascript">
: "偶"
</source>
または
<source lang="javascript">
</source>
など。
=== if-else 文の構文===
<source lang="
if (条件式)
文1
163 ⟶ 162行目:
== switch ==
'''[[w:switch文|switch文]]'''(スイッチぶん、''switch statement'')は、if
<source lang="javascript">
if (
}
else if (
}
else if (
}
else if (
}
else {
}
</source>
これはswitch文を使って次のように書くことができます。
<source lang="javascript">
switch (keyCode) {
}</source>▼
}▼
▲</source>
必ずcase節の最後にbreak文を書くのを忘れないでください。なお、たいていのケースではswitch文を使わなくても、連想配列を応用したディスパッチテーブルで事足ります。switch文はここぞというときに使ってください。
<source lang="javascript">
</source>
217 ⟶ 214行目:
case 値2 :
文2
:
:
case 値n :
文n
230 ⟶ 228行目:
<source lang="javascript">
let i = 0;
while (
i++;
}
247 ⟶ 245行目:
let i = 0;
do {
i++;
} while (
</source>
== for ==
'''[[w:
<source lang="javascript">
for (
}
</source>
267 ⟶ 265行目:
<source lang="javascript">
for (let i = 0, len = array.length; i < len; i++) {
}
</source>
単文の場合はブロックを省くことができます<ref>文 ⊇ ブロック文</ref>。
<source lang="javascript">
const array = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
for (let i = 0, len = array.length; i < len; i++)
</source>
285 ⟶ 283行目:
<source lang="javascript">
const array = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
for (
;
</source>
291 ⟶ 289行目:
このような書き方をしても読みにくいだけですが、こちらの方が簡潔だという人もいるでしょう。
== for
for
<source lang="javascript">
const obj = { x: 2, y: 3, z: 5 };
for (const prop in obj) {
console.log(`${prop}: ${obj[prop]}`);
}
// x: 2
304 ⟶ 302行目:
</source>
== for
for
<source lang="javascript" line>
const ary = [..."XYZ"];
for (const el of ary) {
console.log(el);
}
// X
322 ⟶ 321行目:
for (const el of obj) {
console.log(el);
}
</source>
329 ⟶ 328行目:
となる。
== for await
for await
<source lang="javascript">
async function* asyncShift() {
349 ⟶ 348行目:
// 262144
</source>
== for each-in ==
for each-in 文はJavaScript 1.6で[[w:ECMAScript for XML|ECMAScript for XML]](E4X)のサポートの一環で導入されましたが、E4Xの廃止を受け非推奨を経て'''廃止'''されました。
下のプログラム例もモダンブラウザでは SyntaxError となります。[[#for … of|for … of]] 文を使うようにして下さい。<br>
JavaScript 1.6で追加されたfor each-in文はオブジェクトの値を順番に取り出して反復処理します。
<SyntaxHighlight lang="JavaScript">
var sales = <sales vendor="John">
<item type="peas" price="4" quantity="6"/>
<item type="carrot" price="3" quantity="10"/>
<item type="chips" price="5" quantity="3"/>
</sales>;
for each(var price in sales..@price) {
console.log(price);
▲}
/*
4
3
5
*/
</SyntaxHighlight>
== break ==
'''[[w:break文|break文]]'''(ブレーク文、''break statement'')はループまたはswitch文を途中で抜けます。
次のプログラムは''i''が5になった時点でfor文のループを抜けるので、0から4までの数字を表示します。 <source lang="javascript">
for (
if (
break;
}
</source>
== continue ==
'''[[w:continue文|continue文]]'''(コンティニュー文、''continue statement'')はループを次に進めます。
次のプログラムは0から9までの数字のうち3の倍数だけ表示します。 <source lang="javascript">
for (
if (
continue;
}
</source>
== ラベル ==
ラベルを使用すると深いループを一気に抜け
<source lang="javascript">
LOOP:
for (
for (
if (
break LOOP;
}
}
392 ⟶ 414行目:
https://ja.wikibooks.org/
for (let i = 0; i < 3; i++) {
console.log(i);
}
</source>
405 ⟶ 427行目:
== その他の制御文 ==
<!-- 関数呼び出しと return文はここに含めるべき? -->
<!-- with文が制御構造であるかは疑問、非推奨で有ることを強調するために残した。 -->
=== with文 ===
414 ⟶ 438行目:
<syntaxhighlight lang="html5">
function math1(){
}
function math2(){
with (
}
}
453 ⟶ 477行目:
C++等の他の言語と異なり、オブジェクト指向ともメモリ管理とは直接関連しない(リファレンスが1つ減る事で間接的にGCの挙動に関連する)。
-->
== 脚注 ==
<references />
== 外部リンク ==
* [https://tc39.es/ecma262/#sec-if-statement ECMA-262::14.6 The if Statement]
* [https://tc39.es/ecma262/#sec-iteration-statements ECMA-262::14.7 Iteration Statements]
[[Category:JavaScript|せいきよこうそう]]
|