ç¹°ãè¿ãå¦çã¯é »ç¹ã«å¿ è¦ã«ãªãã¾ãã
ä¾ãã°ã1ã¤ãã¤ãªã¹ãããååãåºåãããããªå ´åããåã«1ãã10ã®æ°å¤ããããã«åãã³ã¼ããå®è¡ããå ´åãªã©ã§ãã
ã«ã¼ã ã¯è¤æ°ååãã³ã¼ããç¹°ãè¿ãææ®µã§ãã
ä¸ç´è åãã®ã¡ãã£ã¨ãããç¥ããã§ãã
ãã®è¨äºã¯åºæ¬çãªã«ã¼ã: while, do..while 㨠for(..;..;..) ã®ã¿ã®èª¬æããã¦ãã¾ãã
ä»ã®ç¨®é¡ã®ã«ã¼ããæ¤ç´¢ãã¦ãã®è¨äºã«ãã©ãçããã®ã§ããã°ã以ä¸ãåç §ãã¦ãã ããã
- ãªãã¸ã§ã¯ãããããã£ã®ã«ã¼ã㯠forâ¦in ã§ãã
- é åãå復å¯è½ãªãã¸ã§ã¯ãã«å¯¾ããã«ã¼ã㯠forâ¦of 㨠iterables ã§ãã
ãã以å¤ã®å ´åã¯ãç¶ãã¦èªãã§ã¿ã¦ãã ããã
âwhileâ ã«ã¼ã
while ã«ã¼ãã¯æ¬¡ã®æ§æã«ãªãã¾ã:
while (condition) {
// code
// ãããã "ã«ã¼ãæ¬ä½" ã§ã
}
condition ã true ã®éãã«ã¼ãã®æ¬ä½ã® code ãå®è¡ããã¾ãã
ä¾ãã°ã以ä¸ã®ã«ã¼ã㯠i < 3 ã®éãi ãåºåãã¾ã:
let i = 0;
while (i < 3) { // 0, 次㫠1, 次㫠2 ã表示
alert( i );
i++;
}
ã«ã¼ãæ¬ä½ã®1åã®å®è¡ã¯ ã¤ãã¬ã¼ã·ã§ã³ ã¨å¼ã°ãã¾ããä¸ã®ä¾ã®ã«ã¼ãã¯3åã¤ãã¬ã¼ã·ã§ã³ãã¾ãã
ãããä¸ã®ä¾ã« i++ ããªãå ´åãã«ã¼ã㯠(çè«ä¸ã¯) æ°¸é ã«ç¹°ãè¿ããã¾ããå®éã«ã¯ããã©ã¦ã¶ã¯ãã®ãããªã«ã¼ããæ¢ããæ¹æ³ãæä¾ãã¦ããããµã¼ããµã¤ãJavaScriptã§ã¯ãã®ããã»ã¹ã殺ããã¨ãã§ãã¾ãã
æ¯è¼ã«éãããã©ããªå¼ã夿°ãã«ã¼ãã®æ¡ä»¶ã«ãããã¨ãã§ãã¾ããæ¡ä»¶ã¯ while ã«ãã£ã¦è©ä¾¡ãããçå½å¤ã«å¤æããã¾ãã
ãã¨ãã°ãwhile (i != 0) ãããçãæ¸ãæ¹æ³ã¨ãã¦while (i)ãããã¾ã:
let i = 3;
while (i) { // i ã 0 ã«ãªã£ãã¨ããæ¡ä»¶ãå½ã«ãªããã«ã¼ããæ¢ã¾ãã¾ã
alert( i );
i--;
}
ã«ã¼ãã®æ¬ä½ãåä¸ã®æã§ããå ´åãæ¬å¼§{â¦}ãçç¥ãããã¨ãã§ãã¾ã:
let i = 3;
while (i) alert(i--);
âdoâ¦whileâ ã«ã¼ã
do..while æ§æã使ããã¨ã§ãæ¡ä»¶ãã§ãã¯ãã«ã¼ãæ¬ä½ã® ä¸ã« ç§»åããããã¨ãã§ãã¾ãã:
do {
// loop body
} while (condition);
ã«ã¼ãã¯æåã«æ¬ä½ãå®è¡ããå¾ãæ¡ä»¶ããã§ãã¯ããæ¡ä»¶ãçã§ããéãæ¬ä½ã®å®è¡ãç¹°ãè¿ãã¾ãã
ä¾:
let i = 0;
do {
alert( i );
i++;
} while (i < 3);
ãã®æ§æã®å½¢å¼ã¯ãæ¡ä»¶ãçã«ãªããã©ããã«é¢ããããå°ãªãã¨ã1度 ã¯ã«ã¼ãæ¬ä½ãå®è¡ãããå ´åã«ã®ã¿ä½¿ç¨ãããã¹ãã§ããé常ã¯ä»ã®å½¢å¼ã好ã¾ãã¾ã: while(â¦) {â¦}
âforâ ã«ã¼ã
for ã«ã¼ãã¯æã使ããããã®ã®1ã¤ã§ãã
ãã®ããã«ãªãã¾ã:
for (begin; condition; step) {
// ... loop body ...
}
ä¾ã§ãããã®ãã¼ãã®æå³ãå¦ã³ã¾ããããä¸ã®ã«ã¼ã㯠i ã 0 ãã 3 ã«ãªãã¾ã§(3 ã¯å«ã¿ã¾ãã)ã alert(i) ãå®è¡ãã¾ãã:
for (let i = 0; i < 3; i++) { // 0, 次㫠1, 次㫠2 ã表示
alert(i);
}
for æãé¨åçã«èª¿ã¹ã¦ã¿ã¾ããã:
| ãã¼ã | ||
|---|---|---|
| begin | i = 0 |
ã«ã¼ãã«å ¥ãã¨1度å®è¡ããã¾ãã |
| condition | i < 3 |
ãã¹ã¦ã®ã«ã¼ãã®ã¤ãã¬ã¼ã·ã§ã³ã®åã«ãã§ãã¯ããã¾ããæ¡ä»¶ãå½ã®å ´åãã«ã¼ãã忢ãã¾ãã |
| step | i++ |
åã¤ãã¬ã¼ã·ã§ã³ã§ãæ¡ä»¶ãã§ãã¯ã®åã«æ¬ä½ã®å¾ã«å®è¡ããã¾ãã |
| body | alert(i) |
æ¡ä»¶ãçã®éç¹°ãè¿ãå®è¡ããã¾ãã |
ä¸è¬çãªã«ã¼ãã¢ã«ã´ãªãºã ã¯æ¬¡ã®ããã«åä½ãã¾ã:
begin ãå®è¡
â (if condition â body ãå®è¡ã step ãå®è¡)
â (if condition â body ãå®è¡ã step ãå®è¡)
â (if condition â body ãå®è¡ã step ãå®è¡)
â ...
ã¤ã¾ããbegin ã1度å®è¡ãããã®å¾ãå condition ã®è©ä¾¡ã®å¾ãbody 㨠step ãå®è¡ãããã¨ããç¹°ãè¿ãã«ãªãã¾ãã
ããã«ã¼ãã«æ £ãã¦ããªãå ´åã¯ãä¸ã®ä¾ã«æ»ã£ã¦ãç´ã®ä¸ã§ã¹ãããæ¯ã«ã©ã®ããã«åä½ããããåç¾ãã¦ã¿ãã¨çè§£ããããã§ãããã
ãããä»ã®ã±ã¼ã¹ã§æ£ç¢ºã«èµ·ãã£ã¦ãããã¨ã§ã:
// for (let i = 0; i < 3; i++) alert(i)
// begin ãå®è¡
let i = 0
// if condition â body ãå®è¡ã step ãå®è¡
if (i < 3) { alert(i); i++ }
// if condition â body ãå®è¡ã step ãå®è¡
if (i < 3) { alert(i); i++ }
// if condition â body ãå®è¡ã step ãå®è¡
if (i < 3) { alert(i); i++ }
// ...çµãã, ä» i == 3 ãªã®ã§
ããã§ âã«ã¦ã³ã¿â 夿° i ã¯ã«ã¼ãã®ä¸ã§æ£ãã宣è¨ããã¾ãããã㯠âã¤ã³ã©ã¤ã³â 夿°å®£è¨ã¨å¼ã°ãã¾ãããã®ãããªå¤æ°ã¯ã«ã¼ãã®ä¸ã§ã ãè¦ãã¾ãã
for (let i = 0; i < 3; i++) {
alert(i); // 0, 1, 2
}
alert(i); // ã¨ã©ã¼, ãã®ãããªå¤æ°ã¯ããã¾ãã
夿°ã宣è¨ãã代ããã«ãæ¢åã®ãã®ã使ããã¨ãã§ãã¾ã:
let i = 0;
for (i = 0; i < 3; i++) { // æ¢åã®å¤æ°ã使ç¨
alert(i); // 0, 1, 2
}
alert(i); // 3, ã«ã¼ãã®å¤ã§å®£è¨ããã¦ããã®ã§è¦ãã
ä¸é¨åã®çç¥
for ã®ä¸é¨åã¯çç¥ãããã¨ãã§ãã¾ãã
ä¾ãã°ãã«ã¼ãã®æåã§ä½ãããå¿
è¦ããªããã°ãbegin ãçç¥ã§ãã¾ãã
ãã®ããã«ãªãã¾ã:
let i = 0; // ãã§ã« i ã宣è¨ã代å
¥æ¸ã¿
for (; i < 3; i++) { // "begin" ä¸è¦
alert( i ); // 0, 1, 2
}
åãããã« step ãã¼ããé¤å»ãããã¨ãã§ãã¾ãã:
let i = 0;
for (; i < 3;) {
alert( i++ );
}
ã«ã¼ã㯠while (i < 3) ã¨åãã«ãªãã¾ããã
å®éã«ã¯ãã¹ã¦ãé¤ããã¨ãã§ãã¾ããããã¯ç¡éã«ã¼ãã«ãªãã¾ã:
for (;;) {
// å¶éãªãã§ç¹°ãè¿ã
}
for ã®2ã¤ã®ã»ãã³ãã³ ; ã¯å¿
é ã§ãããã¨ã«æ³¨æãã¦ãã ããããªãå ´åã¯æ§æã¨ã©ã¼ã«ãªãã¾ãã
ã«ã¼ãã®çµãã
é常ãã«ã¼ãã¯æ¡ä»¶ãå½ã«ãªãã¨çµäºãã¾ãã
ã§ãããbreak ãã£ã¬ã¯ãã£ããå©ç¨ãã¦ããã¤ã§ãå¼·å¶çã«ã«ã¼ããçµãããããã¨ãã§ãã¾ãã
ä¾ãã°ã以ä¸ã®ã«ã¼ãã¯ã¦ã¼ã¶ã«ä¸é£ã®æ°åãå ¥åããããæ±ãã¾ãããæ°åãå ¥åãããªãã£ãå ´å㯠â䏿â ãã¾ãã:
let sum = 0;
while (true) {
let value = +prompt("Enter a number", '');
if (!value) break; // (*)
sum += value;
}
alert( 'Sum: ' + sum );
ãããã¦ã¼ã¶ã空ãå
¥åããããã¯å
¥åããã£ã³ã»ã«ããå ´åãbreak ãã£ã¬ã¯ãã£ãã¯è¡ (*) ã§æå¹ã«ãªãã¾ããããã¯ã«ã¼ããããã«åæ¢ããã«ã¼ãå¾ã®æåã®è¡ã¸å¶å¾¡ã渡ãã¾ããã¤ã¾ããalert ã§ãã
âç¡éã«ã¼ã + å¿
è¦ã«å¿ãã breakâ ã®çµã¿åããã¯ãã«ã¼ãã®æåãæå¾ã§ã¯ãªããéä¸ãæ¬ä½ã®æ§ã
ãªå ´æã§æ¡ä»¶ããã§ãã¯ããå¿
è¦ãããç¶æ³ã§æé©ã§ãã
次ã®ã¤ãã¬ã¼ã·ã§ã³ã«é²ã
continue ãã£ã¬ã¯ãã£ã㯠break ã® â軽éçâ ã§ããã«ã¼ãå
¨ä½ã¯ã¹ããããã¾ããããã®ä»£ããã«ãç¾å¨ã®ã¤ãã¬ã¼ã·ã§ã³ã忢ããæ°ããã¤ãã¬ã¼ã·ã§ã³ã®ã¹ã¿ã¼ããå¼·å¶ãã¾ã(æ¡ä»¶ãçã§ããã°)ã
ç¾å¨ã®ã¤ãã¬ã¼ã·ã§ã³ãå®äºããæ¬¡ã¸ç§»åãããã¨ãã«ä½¿ãã¾ãã
以ä¸ã®ã«ã¼ãã¯ã奿°å¤ã®ã¿ãåºåãããã continue ã使ç¨ãã¦ãã¾ã:
for (let i = 0; i < 10; i++) {
// true ã®å ´åãæ¬ä½ã®æ®ãã®ãã¼ããã¹ããã
if (i % 2 == 0) continue;
alert(i); // 1, 次㫠3, 5, 7, 9
}
i ã®å¤ãå¶æ°ã®å ´åãcontinue ãã£ã¬ã¯ãã£ãã¯æ¬ä½ã®å®è¡ã忢ããfor ã®æ¬¡ã®ã¤ãã¬ã¼ã·ã§ã³ã¸å¶å¾¡ã渡ãã¾ã(次ã®çªå·ã§)ããããã£ã¦ãalert ã¯å¥æ°å¤ã«å¯¾ãã¦ã®ã¿å®è¡ããã¾ãã
continue ã使ãã¨å
¥ãåã®ã¬ãã«ãæ¸ããã¾ã奿°å¤ã表示ããã«ã¼ãã¯ãã®ããã«æ¸ããã¨ãã§ãã¾ã:
for (let i = 0; i < 10; i++) {
if (i % 2) {
alert( i );
}
}
æè¡çãªè¦³ç¹ããã¯ãããã¯ä¸ã®ä¾ã¨åãã§ãã確ãã«ãcontinue ã®ä»£ããã« if ãããã¯ã§ã³ã¼ããã©ããããã ãã§ãã
ããããå¯ä½ç¨ã¨ãã¦æ¬å¼§ã®ãã¹ãã1段深ããªãã¾ããif ã®ä¸ã®ã³ã¼ããé·ãå ´åãå
¨ä½ã®å¯èªæ§ãä¸ããå¯è½æ§ãããã¾ãã
? ã®å³å´ã«ã¯ break/continue ãå
¥ããªãã§ãã ããå¼ã§ã¯ãªãæ§ææ§é ã¯ã ä¸é
æ¼ç®å ? ã®ä¸ã§ã¯ä½¿ããªããã¨ã«æ³¨æãã¦ãã ãããç¹ã«ããã£ã¬ã¯ãã£ã break/continue ã¯ããã§ã¯è¨±å¯ããã¾ããã
ä¾ãã°ã次ã®ãããªã³ã¼ããããã¨ãã¾ã:
if (i > 5) {
alert(i);
} else {
continue;
}
â¦ããããçå符ã使ã£ã¦æ¸ãç´ãã¾ã:
(i > 5) ? alert(i) : continue; // continue ã¯ããã§ã¯ä½¿ãã¾ãã
â¦ãã®å ´åã¯åä½ã忢ãã¾ããã³ã¼ãã¯æ§æã¨ã©ã¼ã«ãªãã¾ã:
ãã㯠if ã®ä»£ããã«çå符æ¼ç®å ? ã使ç¨ããªãå¥ã®çç±ã§ãã
break/continue ã®ããã®ã©ãã«
ä¸åº¦ã«è¤æ°ã®ãã¹ãããã«ã¼ãããæãåºããã¨ãå¿ è¦ã¨ãªãå ´åãããã¾ãã
ä¾ãã°ãä¸ã®ã³ã¼ãã§ã¯ åº§æ¨ (i, j) ã (0,0) ãã (2,2) ã¸ããã³ãããããããi 㨠j ãã«ã¼ããã¾ã:
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(`Value at coords (${i},${j})`, '');
// ããããã§çµäºãã¦ä¸ã«ãã Done ããããå ´åã«ã¯ã©ãããã°ããã§ãããï¼
}
}
alert('Done!');
ã¦ã¼ã¶ãå ¥åããã£ã³ã»ã«ããå ´åãå¦çãã¹ãããããæ¹æ³ãå¿ è¦ã§ãã
input ã®å¾ã®é常㮠break ã¯å
é¨ã«ã¼ãã®ã¿ã®çµäºã§ããããã ãã§ã¯ååã§ã¯ããã¾ãããããã§ã©ãã«ãæãã®æãå·®ã伸ã¹ã¦ããã¾ãã
ã©ãã« ã¯ãã«ã¼ãã®åã®ã³ãã³ãã¤ããèå¥åã§ã:
labelName: for (...) {
...
}
ã«ã¼ãã®ä¸ã® break <labelName> æã¯ã©ãã«ã¾ã§æãåºãã¾ã:
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
let input = prompt(`Value at coords (${i},${j})`, '');
// æåããæåã¾ãã¯ãã£ã³ã»ã«ãããå ´åã両æ¹ã®ã«ã¼ãããæãã
if (!input) break outer; // (*)
// å¤ã«ä½ããããå¦ç...
}
}
alert('Done!');
ä¸ã®ã³ã¼ãã§ãbreak outer 㯠outer ã¨åä»ããããã©ãã«ãä¸ã«æ¢ãããã®ã«ã¼ããæãã¾ãã
ãã®ãããå¶å¾¡ã¯ (*) ãã alert('Done!') ã«ã¾ã£ããã«é²ã¿ã¾ãã
ã©ãã«ãå¥ã®è¡ã«ç§»åããããã¨ãã§ãã¾ã:
outer:
for (let i = 0; i < 3; i++) { ... }
continue ãã£ã¬ã¯ãã£ããã©ãã«ã¨ä¸ç·ã«ä½¿ããã¨ãã§ãã¾ãããã®ã±ã¼ã¹ã§ã¯ãå®è¡ã¯ã©ãã«ä»ããããã«ã¼ãã®æ¬¡ã®ã¤ãã¬ã¼ã·ã§ã³ã«ã¸ã£ã³ããã¾ãã
ã©ãã«ã¯ã³ã¼ãã®ä»»æã®å ´æã«ã¸ã£ã³ããããã¨ã¯ã§ãã¾ããã
ä¾ãã°ããã®ããã«ãããã¨ã¯åºæ¥ã¾ãã:
break label; // 以ä¸ã®ã©ãã«ã«ã¸ã£ã³ãã¯ãã¾ãã
label: for (...)
break ãã£ã¬ã¯ãã£ãã¯ã³ã¼ããããã¯ã®ä¸ã«ããå¿
è¦ãããã¾ããæè¡çã«ã¯ä»»æã®ã©ãã«ä»ããããã³ã¼ããããã¯ã§ããã°æ©è½ãã¾ãã
label: {
// ...
break label; // works
// ...
}
â¦ã§ãããbreak ãå©ç¨ããã 99.9% ã¯ä¸ã®ä¾ã§è¦ã¦ããããã«ãã«ã¼ãã®å
å´ã§ãã
continue ã¯ã«ã¼ãã®å
å´ã§ã®ã¿å©ç¨å¯è½ã§ãã
ãµããª
3種é¡ã®ã«ã¼ãã«ã¤ãã¦èª¬æãã¾ãã:
whileâ æ¡ä»¶ã¯åã¤ãã¬ã¼ã·ã§ã³ã®åã«ãã§ãã¯ããã¾ããdo..whileâ æ¡ä»¶ã¯åã¤ãã¬ã¼ã·ã§ã³ã®å¾ã«ãã§ãã¯ããã¾ããfor (;;)â æ¡ä»¶ã¯åã¤ãã¬ã¼ã·ã§ã³ã®åã«ãã§ãã¯ããã追å ã®è¨å®ãã§ãã¾ãã
âç¡éâ ã«ã¼ããä½ãã«ã¯ãé常㯠while(true) æ§é ã使ããã¾ãããã®ãããªã«ã¼ãã¯ä»ã®ä»ã®ã«ã¼ãã¨åæ§ã« break ãã£ã¬ã¯ãã£ãã§åæ¢ãããã¨ãã§ãã¾ãã
ãããç¾å¨ã®ã¤ãã¬ã¼ã·ã§ã³ã§ä½ãããããªããæ¬¡ã®ã¤ãã¬ã¼ã·ã§ã³ã«é²ã¿ããå ´åã¯ãcontinue ãã£ã¬ã¯ãã£ãã使ãã¾ãã
break/continue ã¯ã«ã¼ãã®åã®ã©ãã«ããµãã¼ããã¾ããã©ãã«ã¯ã break/continue ã§ãã¹ããããã«ã¼ããæãã¦å¤å´ã®ã«ã¼ãã«è¡ãããã®å¯ä¸ã®æ¹æ³ã§ãã
ã³ã¡ã³ã
<code>ã¿ã°ã使ã£ã¦ãã ãããè¤æ°è¡ã®å ´åã¯<pre>ãã10è¡ãè¶ ããå ´åã«ã¯ãµã³ãããã¯ã¹ã使ã£ã¦ãã ãã(plnkr, JSBin, codepenâ¦)ã