2
2
3
3
私たちはしばしば連続して何度も似たような処理を実行する必要があります。
4
4
5
- 例えば、1つずつリストから商品を出力する必要がある場合、もしくは、単に1から10の数値それぞれに同じコードを実行する場合 。
5
+ 例えば、1つずつリストから商品を出力する必要がある場合、または単に1から10の数値それぞれに同じコードを実行する場合などです 。
6
6
7
7
* ループ* は複数回コードの同じ部分を繰り返す方法です。
8
8
@@ -31,7 +31,7 @@ while (i < 3) { // 0, 次に 1, 次に 2 を表示
31
31
}
32
32
```
33
33
34
- ループ本体の1つの実行は * イテレーション* と呼ばれます。上の例のループは3つのイテレーションをします 。
34
+ ループ本体の1回の実行は * イテレーション* と呼ばれます。上の例のループは3回イテレーションします 。
35
35
36
36
もしも、上の例に ` i++ ` がない場合、ループは (理論上は) 永遠に繰り返されます。実際には、ブラウザはこのようなループを止める方法を提供しており、サーバサイドJavaScriptではそのプロセスを殺すことができます。
37
37
@@ -50,7 +50,7 @@ while (i) { // i が 0 になったとき、条件が偽になり、ループが
50
50
```
51
51
52
52
```` smart header="本体が1行の場合、括弧は必須ではありません"
53
- もしもループの本体が1つの文である場合 、括弧`{…}`を省略することができます:
53
+ ループの本体が1つの文である場合 、括弧`{…}`を省略することができます:
54
54
55
55
```js run
56
56
let i = 3;
@@ -62,7 +62,7 @@ while (i) alert(i--);
62
62
63
63
## "do..while" ループ
64
64
65
- 条件チェックは ` do..while ` 構文を使うことでループ本体の * 下に* 移動することができます 。:
65
+ 条件チェックは ` do..while ` 構文を使うことでループ本体の * 下に* 移動させることができます 。:
66
66
67
67
``` js
68
68
do {
82
82
} while (i < 3 );
83
83
```
84
84
85
- この構文の形式は、条件が真になるかどうかに関わらず、** 少なくとも1度** はループ本体を実行したい場合を除き、ほとんど使われません。通常、他の形式が好まれます : ` while(…) {…} `
85
+ この構文の形式は、条件が真になるかどうかに関わらず、** 少なくとも1度** はループ本体を実行したい場合を除き、ほとんど使われません。通常は他の形式が好まれます : ` while(…) {…} `
86
86
87
87
## "for" ループ
88
88
@@ -122,7 +122,7 @@ begin を実行
122
122
→ ...
123
123
```
124
124
125
- もし初めてループを使う場合、この例に戻って、紙の上でステップ毎にどのように動作するかを再現することが恐らく役立つでしょう 。
125
+ もし初めてループを使う場合は、上の例に戻って、紙の上でステップ毎にどのように動作するかを再現してみると理解しやすいでしょう 。
126
126
127
127
これが今のケースで正確に起こっていることです:
128
128
@@ -193,15 +193,15 @@ for (; i < 3;) {
193
193
194
194
ループは ` while (i < 3) ` と同じになりました。
195
195
196
- 実際にはすべてを除くこともできます、 それは無限ループになります:
196
+ 実際にはすべてを除くこともできます。 それは無限ループになります:
197
197
198
198
``` js
199
199
for (;;) {
200
200
// 制限なしで繰り返し
201
201
}
202
202
```
203
203
204
- 2つの ` for ` のセミコロン ` ; ` は必須であることに注意してください。ない場合は構文エラーになります。
204
+ ` for ` の2つのセミコロン ` ; ` は必須であることに注意してください。ない場合は構文エラーになります。
205
205
206
206
## ループの終わり
207
207
@@ -231,13 +231,13 @@ alert( 'Sum: ' + sum );
231
231
もしもユーザが空を入力、もしくは入力をキャンセルした場合、` break ` ディレクティブは行 ` (*) ` で有効になります。
232
232
それはループをすぐに停止し、ループ後の最初の行へ制御を渡します。つまり、` alert ` です。
233
233
234
- "必要に応じた無限ループ + ` break ` " の組み合わせは、ループの最初/最後ではなくその間、もしくは本体の様々な場所で条件をチェックする必要がある状況で最適です 。
234
+ "必要に応じた無限ループ + ` break ` " の組み合わせは、ループの最初/最後ではなく、その間や本体の様々な場所で条件をチェックする必要がある状況で最適です 。
235
235
236
236
## 次のイテレーションに進む
237
237
238
238
` continue ` ディレクティブは ` break ` の "軽量版" です。ループ全体はストップしません。その代わりに、現在のイテレーションを停止し、新しいイテレーションのスタートを強制します(もしも条件が真であれば)。
239
239
240
- 私たちは、現在のイテレーションが完了し次へ移動したいときに使います 。
240
+ 現在のイテレーションが完了し、次へ移動したいときに使います 。
241
241
242
242
以下のループは奇数値だけを出力するために ` continue ` を使用しています:
243
243
@@ -251,7 +251,7 @@ for (let i = 0; i < 10; i++) {
251
251
}
252
252
```
253
253
254
- ` i ` の値が偶数の場合、` continue ` ディレクティブは本体の実行を停止し、` for ` の次のイテレーションへ制御を渡しします (次の番号で)。
254
+ ` i ` の値が偶数の場合、` continue ` ディレクティブは本体の実行を停止し、` for ` の次のイテレーションへ制御を渡します (次の番号で)。
255
255
したがって、` alert ` は奇数値に対してのみ実行されます。
256
256
257
257
````smart header="ディレクティブ ` continue ` を使うと入れ子のレベルを減らせます"
@@ -269,13 +269,13 @@ for (let i = 0; i < 10; i++) {
269
269
270
270
技術的な観点からは、これは上の例と同じです。確かに、` continue ` の代わりに ` if ` ブロックでコードをラップするだけです。
271
271
272
- しかし、副作用として括弧のネストが1段深くなります。もしも ` if ` のコードの中文が長い場合 、全体の可読性が下がる可能性があります。
272
+ しかし、副作用として括弧のネストが1段深くなります。もしも ` if ` の中のコードが長い場合 、全体の可読性が下がる可能性があります。
273
273
````
274
274
275
- ````warn header="`?` の右側には `break/continue` はありません "
276
- 式ではない構文構造は `'?'` の中では使うことはできないことに注意してください。特に、ディレクティブ `break/continue` はそこでは許可されません。
275
+ ````warn header="`?` の右側には `break/continue` を入れないでください "
276
+ 式ではない構文構造は、 `'?'` の中では使うことはできないことに注意してください。特に、ディレクティブ `break/continue` はそこでは許可されません。
277
277
278
- 例えば、このコードを使うとします:
278
+ 例えば、このコードを考えます
279
279
280
280
```js
281
281
if (i > 5) {
@@ -285,7 +285,7 @@ if (i > 5) {
285
285
}
286
286
```
287
287
288
- ...そして 、疑問符を使って書き直します:
288
+ ...これを 、疑問符を使って書き直します:
289
289
290
290
```js no-beautify
291
291
(i > 5) ? alert(i) : *!*continue*/!*; // continue はここでは使えません
@@ -299,7 +299,7 @@ if (i > 5) {
299
299
300
300
## break/continue のためのラベル
301
301
302
- 時々、複数のネストしたループから一度で抜け出す必要があります 。
302
+ 時々、複数のネストしたループから一度で抜け出す必要があることがあります 。
303
303
304
304
例えば、下のコードでは 座標 ` (i, j) ` を ` (0,0) ` から ` (3,3) ` へプロンプトするよう ` i ` と ` j ` をループします:
305
305
@@ -323,7 +323,7 @@ alert('Done!');
323
323
` input ` の後の通常の ` break ` は内部ループのみの終了です。それだけでは十分ではありません。
324
324
ここでラベルが助けにきます。
325
325
326
- * ラベル* はループの前のコロンがついた識別子です :
326
+ * ラベル* は、ループの前のコロンがついた識別子です :
327
327
``` js
328
328
labelName: for (... ) {
329
329
...
@@ -361,7 +361,7 @@ outer:
361
361
for (let i = 0 ; i < 3 ; i++ ) { ... }
362
362
```
363
363
364
- ` continue ` ディレクティブもまたラベルと一緒に使うことが出来ます 。このケースでは、実行はラベル付けされたループの次のイテレーションにジャンプします。
364
+ ` continue ` ディレクティブもラベルと一緒に使うことができます 。このケースでは、実行はラベル付けされたループの次のイテレーションにジャンプします。
365
365
366
366
```` warn header="ラベルは \" goto\" ではありません"
367
367
ラベルはコードの任意の場所にジャンプすることはできません。
@@ -373,19 +373,19 @@ break label; // label にジャンプ? いいえ。
373
373
label: for (...)
374
374
```
375
375
376
- `break/continue` への呼び出しはループの中からだけ可能です、 またラベルはそのディレクティブから上のどこかにある必要があります。
376
+ `break/continue` の呼び出しはループの中からだけ可能です。 またラベルはそのディレクティブから上のどこかにある必要があります。
377
377
````
378
378
379
379
## サマリ
380
380
381
- 3つのループのタイプについて説明しました :
381
+ 3つのループの種類について説明しました :
382
382
383
383
- ` while ` -- 条件は各イテレーションの前にチェックされます。
384
384
- ` do..while ` -- 条件は各イテレーションの後にチェックされます。
385
- - ` for (;;) ` -- 条件は各イテレーションの前にチェックされ、追加の設定が利用可能です 。
385
+ - ` for (;;) ` -- 条件は各イテレーションの前にチェックされ、追加の設定ができます 。
386
386
387
387
"無限" ループを作るために、通常は ` while(true) ` 構造が使われます。このようなループは他の他のループと同様に ` break ` ディレクティブで停止することができます。
388
388
389
389
もしも現在のイテレーションで何もしたくなく、次のイテレーションに進みたい場合は、` continue ` ディレクティブを使います。
390
390
391
- ` break/continue ` はループの前のラベルをサポートします。ラベルはネストを抜け、外のループに行くための ` break/continue ` のための方法です。
391
+ ` break/continue ` はループの前のラベルをサポートします。ラベルは、ネストを抜けて外のループに行くための、 ` break/continue ` のための方法です。
0 commit comments