- 循环/迭代: 将一个动作执行N次, 每重复一次执行就称为一次循环/迭代
-
for 语句 — 先判断再执行
一个 for 循环会一直重复执行, 直到指定的循环条件为 false
- 常用于一些可预计执行次数的循环
基本格式如下:
for([initialExpression]; [condition] ; [incrementExpression])statement
initialExpression: 用于写初始化表达式, 整个 for 语句的执行过程中只在一开始被执行一次, 可省略不写
- condition: 用于写条件表达式, 当 condition 的值为真时, statement这部分将被再次执行, 如 condition 的值为假, 则结束 for 循环. 可省略不写, 此时默认 condition=true
- incrementExpression: 用于写更新表达式, 一般是让 condition 的值为假, 能跳出循环的可能
statement: 每一次循环重复执行的内容, 超过一条语句时, 使用花括号 {} 括起
for(let i=0; i<5; i++) {console.log(i)}
do…while 语句 — 先执行再判断
do…while 语句一直重复直到指定的条件求值为假
基本格式如下:
dostatementwhile (condition);
各部分解释与 for 循环处相同
-
while 语句 — 先判断再执行
一个 while 语句只要指定的条件求值为真, 就会一直执行它的语句块
- 常用于一些不可预计次数的循环或是伪无穷循环(通过用户操作后跳出的那种)
基本格式如下:
while(condition)statement
-
label 语句
使用 label 标识一段代码(块?), 能让其他位置在调用的时候更方便
基本格式如下:
label:statement
一个简单的用法 (忘记是哪种语言了, break [n]; 语法可以直接 break 2; 跳出2层循环的) ```javascript loop_1: for(let i=1; i<5; i++) { for(let j=1; j<5; j++) {
if(i*j>10) {console.log(`i=${i}, j=${j}`)break loop_1; // 本来是终止 第i次j循环, 现在终止整个 i循环
} } }
/ 第6行代码为 break 时, 输出结果为: i=3, j=4 i=4, j=3 第6行代码为 break loop_1 时, 输出结果为: i=3, j=4 /
<a name="iuChF"></a># break 语句- 立刻终止当前所在的循环. 当后面有 label 时, 则终止其 label 标记的语句(块?)- 基本格式如下:```javascriptbreak [label];
continue 语句
- 立刻终止本次循环, 开始下一次循环. 当后面有 label 时, 则会对该标记语句执行原效果
基本格式如下:
continue [label];
一个 continue loop_1 的例子 (刚刚开始的 j循环才执行到5, 6行, 就结束了一次i循环, 所以结果是这个) ```javascript loop_1: for(let i=0; i<5; i++) { console.log(‘i=’+i) for(let j=0; j<5; j++) {
if(i*j<10) {continue loop_1;
} console.log(
i=${i}, j=${j}) } }
/ i=0 i=1 i=2 i=3 i=4 /
<a name="Nq82Q"></a># for...in 语句- 循环一个指定的变量来循环一个对象所有可枚举的属性, 循环遍历的结果是数组元素的下标- 基本格式如下```javascriptfor(variable in object) {statements}
一个小例子 ```javascript (function main(){ let obj = { name: ‘ming’, age: 18, sex: ‘nan’ }
for(let key in obj) { console.log(key, ‘=’, obj[key]) } })()
/ name = ming age = 18 sex = nan /
<a name="Wo6MB"></a># for...of 语句- for...of 语句在可迭代对象 (包括Array/Map/Set/arguments 等等)上创建了一个循环, 对值的每一个独特属性调用一次迭代 -- MDN- **for...of 语句并不能对对象类型(Object)数据使用, for...in语句倒是不会, 关于这点本人暂时也没搞明白**- 循环遍历的结果是元素的值- 基本格式如下```javascriptfor(variable of object) {statements}
一个小例子 ```javascript (function main(){ let arr = [‘ming’, 18, ‘nan’]
for(let value of arr) { console.log(value) } })()
/ ming 18 nan / ```
