1.while 循環
while語句屬於前測試循環語句,在循環體內的代碼被執行之前,就會對出口條件求值。因此循環體內代碼有可能永遠不會被執行。
例1:
var i = 0;
while ( i < 10 )
{
i+=2;
}
2.do-while循環
do-while 語句是后測試循環語句,即只有在循環體中的代碼執行之后,才會測試出口條件。換句話說,在對條件表達式求值之前,循環體內的代碼至少被執行一次。
例2:
var i = 0;
do {
i+=2;
}while( i < 10 );
alert(i);
3.for循環
for循環是一種前測試循環語句,但它具有在執行循環之前初始化變量和定義循環后要執行的代碼的能力。
例3:
var count =10;
for(var i=0;i<count;i++){
alert(i);
}
4.break 和continue語句
1>break語句會立即退出循環,強制繼續執行循環后面的語句。
2>continue語句雖然也是立即退出循環,但退出循環后會從循環的頂部繼續執行。
例4:
var num = 0;
for(var i=1; i<10;i++){
if(i%5==0){
break;
}
num++;
}
alert(num);
//4
例5:
var num = 0;
for(var i=1; i<10;i++){
if(i%5==0){
continue;
}
num++;
}
alert(num);
//8
5.for ...of 循環
數組原生具備iterator
接口(即默認部署了Symbol.iterator
屬性),for...of
循環本質上就是調用這個接口產生的遍歷器,可以用下面的代碼證明。
例6:
const arr = ['red', 'green', 'blue']; for(let v of arr) { console.log(v); // red green blue } const obj = {}; obj[Symbol.iterator] = arr[Symbol.iterator].bind(arr); for(let v of obj) { console.log(v); // red green blue }
6.for... in 循環
for ... in 循環中的代碼每執行一次,就會對數組的元素或者對象的屬性進行一次操作
例7:
JavaScript 原有的for...in
循環,只能獲得對象的鍵名,不能直接獲取鍵值
var arr = ['a', 'b', 'c', 'd']; for (let a in arr) { console.log(a); // 0 1 2 3 }
例8
Object.prototype.bar = 10;// 修改Object.prototype
var obj={"name":"wjy","age":26,"sex":"female"};//定義一個object對象
var keys=[];//定義一個數組用來接受key
var values=[];//定義一個數組用來接受value
for(var key in obj){
keys.push(key);
values.push(obj[key]);//取得value
}
alert("keys is :"+keys+" and values is :"+values);
7.map
1.每一次執行匿名函數都支持3個參數,(item,index,input)item:當前項,index:當前項的索引,input:原始數組
例子
var ary = [12,23,24,42,1]; | |
var res = ary.map(function (item,index,input) { | |
return item*10; | |
}) | |
console.log(res);//-->[120,230,240,420,10]; 原數組拷貝了一份,並進行了修改 | |
console.log(ary);//-->[12,23,24,42,1]; 原數組並未發生變化 |
8.forEach
無法中途跳出forEach
循環,break
命令或return
命令都不能奏效。
例9:遍歷數組
myArray.forEach(function (value) { console.log(value); });
等同於
for (var index = 0; index < myArray.length; index++) { console.log(myArray[index]); }
例10:遍歷對象
var obj = {'0':'a','1':'b','2':'c'};
Object.keys(obj).forEach(function(key){
console.log(key,obj[key]);
});