do-while 先执行后判断,至少有一次被执行
var num = 10;
do{
document.write(num+"<br />");//10 9 8 7 6 5 4 3 2 1 0
num--;
}while(num>=0);
document.write(num);//-1
while 先判断后执行
var num = 1;//1、声明循环变量
while (num<=10){//2、判断循环条件;
document.write(num+"<br />");//3、执行循环体操作;
num++;//4、更新循环变量;
}
for 先判断后执行(声明变量;判断条件;更新变量)
for (var num =1; num<=10; num++) {
document.write(num+" <br />"); //1 2 3 4 5 6 7 8 9 10
}
for ..in.. ,for(var i in obj),i 遍历的是键名, obj[i]可以遍历键值
for.. of ..,for(var i of obj),i 遍历的是键值
var arr = ['a', 'b', 'c', 'd'];
for (let i in arr) {
console.log(i); // 0 1 2 3
}
for (let i of arr) {
console.log(i); // a b c d
}
for ..of.. 还可以用于遍历map set结构的数组
var engines = new Set(["Gecko", "Trident", "Webkit", "Webkit"]);
for (var e of engines) {
console.log(e);
}
// Gecko Trident Webkit
var es6 = new Map();
es6.set("edition", 6);
es6.set("committee", "TC39");
es6.set("standard", "ECMA-262");
for (var [name, value] of es6) {
console.log(name + ": " + value);
}
// edition: 6
// committee: TC39
// standard: ECMA-262
arr1.forEach(function(v,i,a){ ... }),只能遍历数组,不能遍历对象
var arr1=["a",66,8,24];
arr1.forEach(function(v,i,a){//分别对应:数组元素,元素的索引,数组本身,后两个可根据需要缺省
alert(v);
});
// ES6写法
var arr1=["a",66,8,24];
arr1.forEach((v,i,a) => {
alert(v);
});
------------------------------------分割线--------------------------------------
JQ的 $.each() 循环
// 可以遍历一个变量,如:数组
var hotel= ['a','b','c'];
$.each(hotel, function(i) {
alert(hotel[i]); // a,b,c
});
$.each(hotel, function(i) {
alert(i); // 0,1,2
});
// 也可以遍历界面元素
// 例如,一个界面中有多个图片,我们想要遍历所有<img>元素取出它们的图片地址,可以像下面这样做
$("img").each(function(i){ alert(this.src); });
// 当然我们也可以动态给<img>元素指定图片地址
$("img").each(function(i){
this.src = "test" + i + ".jpg";
});
// 如果想要实现在某一条件下退出遍历,可以使用return
var arr= [1,2,3,4,5];
$.each(hotel, function(i) {
if(arr[i]>2){return;}
});