for循环
for(初始化变量①; 条件表达式②; 操作表达式③ ){
//循环体④
}
初始化变量:其实就是用var声明一个普通的变量,并且这个变量通常是作为计数器使用。
条件表达式:用来决定每一次循环是否继续执行,也就是循环的终止条件。
操作表达式:每次循环最后执行的代码,经常用于更新计数器(递增或递减)。
循环体:一组被重复执行的语句。
执行流程:
初始化变量,初始化操作在整个 for 循环只会执行一次。
执行条件表达式,如果为 true,则执行循环体语句,否则退出循环,循环结束。
执行操作表达式,此时第一轮结束。
第二轮开始,直接去执行条件表达式(不再初始化变量),如果为 true,则去执行循环体 语句,否则退出循环。
继续执行操作表达式,第二轮结束。… 整体执行顺序为:① ② ④ ③ ② ④ ③ ② ④ ③ … ② 循环结束。
while循环
while (条件表达式) {
//循环体代码
}
-
先执行条件表达式,如果结果为 true,则执行循环体代码;
如果为 false,则退出循环,执行后面代码 -
执行循环体代码
-
循环体代码执行完毕后,程序会继续判断执行条件表达式。
-
while语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不为真时结束循环。
-
do while循环
do while 是先执行代码,在进行判断,所以 do while 至少执行一次。
do { //循环体代码 - 条件表达式为 true 时重复执行循环代码 } while(条件表达式);
for in
常用于遍历对象
不能使用break,continue,return来控制循环let arr = [{name: '张三'},{name: '李四'}]; for (let i in arr) { console.log(i); //遍历下标 结果为 0 1 }
forEach
forEach用于遍历数组中的元素,并且会对数组中元素使用callback(),与map(),raduce()不同的是,它总返回一个undefined,并且不可以链式调用。
不能使用break,continue,return来控制循环let arr = [{name: '张三'},{name: '李四'}]; arr.forEach((item,index)=>{ console.log(index); })
for of
for—of不能遍历普通对象,因为普通对象没有Symbol.iterator属性,如果一个对象有Symbol.iterator属性,那么就可以使用for—of遍历。
常用于遍历array(数组)map(映射)set(集合)strings(字符串)
可以使用break,continue,return来控制循环let arr = [{name: '张三'},{name: '李四'}]; for (let i of arr){ console.log(i); }