目录:
- for
- for...in
- while
- do...while
- forEach
- for...of
第一种:for循环( 数组 )
循环最常用的地方是利用索引来遍历数组,通过初始条件、结束条件和递增条件来循环执行语句块:
var list = ["q","w","e","r"]
for(var i=0; i<list.length; i++){
console.log(i) // 打印出来是1,2,3,4
console.log(list[i]) //打印出来是q,w,e,r
}
第二种:for...in循环( 对象/数组 )
for...in循环是for循环的一个变体,可以把一个对象的所有属性遍历出来,包括自身的和继承的可枚举属性(不含Symbol属性)
对象:
var lilei ={
"name": "lilei",
"age": 18,
"sex": 1
}
for(var key in lilei){
console.log(key) //打印出来的是"name","age","sex"
console.log(lilei[key]) //打印出来的是"lilei",18,1
}
数组:
var list = ["q","w","e","r"]
for(key in list){
console.log(key) //打印出来的是"0","1","2","3"
console.log(list[key]) //打印出来的是 "q","w","e","r"
}
需要注意的是这里的0123是String而不是Number
第三种: while循环
while循环只有一个判断条件, 当条件满足,就不断循环,条件不满足,就退出循环,比如我们要计算10以内所有奇数的和
var n=0
var x=9
while(x>0){
n=n+x
x=x-2
}
console.log(n) //打印出来的结果是25=9+7+5+3+1
第四种: do...while循环
do...while循环和while循环唯一的区别在于,它是在循环结束后再判断条件,也就是说do...while循环最少也会执行一次
var n=0
do{
n=n+1
}while(n<10)
console.log(n) //打印出来的是10
第五种: forEach循环(数组)
forEach让数组的每一项都执行一次给定的函数,语法:
array1.forEach(callbackfn[, thisArg])
参数 | 定义 |
---|---|
array1 | 必选。一个数组对象。 |
callbackfn | 必选。最多可以接受三个参数的函数。对于数组中的每个元素,forEach 都会调用callbackfn 函数一次。 |
thisArg | 可选。 callbackfn 函数中的 this 关键字可引用的对象。如果省略 thisArg,则 undefined 将用作 this 值。 |
callbackfn 参数必须是一个对象,否则会报错
备注:
- 对于数组中出现的每个元素,forEach 方法都会调用 callbackfn 函数一次(采用升序索引顺序)。将不会为数组中缺少的元素调用回调函数。
- 除了数组对象之外,forEach 方法可由具有 length 属性且具有已按数字编制索引的属性名的任何对象使用。
回调函数的语法:
function callbackfn(value, index, array1)
实例(值value, 索引index):
function ShowResults(value, index, ar) {
document.write("value: " + value);
document.write(" index: " + index);
document.write("<br />");
}
var letters = ['ab', 'cd', 'ef'];
letters.forEach(ShowResults);
或者:
var list = ["q","w","e","r"]
list.forEach(function(v,index){
console.log(v)
console.log(index)
})
第六种: for...of(ES6新特性,补充了for...in的不足)
for...in循环出的是key,for...of循环出的是value 要注意它的兼容性还不够
** 例子:**
var list = ["q","w","e","r"]
for(key of list){
console.log(key) //打印出来的是"q","w","e","r"
}
for…of不能循环普通的对象,需要通过和Object.keys()搭配使用