while
只要指定條件為true,循環就可以一直執行。
a = 5;
while( true ){
if( a >= 10 ){
break; //break 語句用于跳出循環
}
console.log( a );
a = a + 1;
}
如果條件一直為true,會導致死循環使瀏覽器崩潰。
do while
do…whlie是另外一種形式的while循環,條件判斷在執行之后,所以它至少會執行一遍,即使條件為false。
var i = 5;
do{
console.log( i );
}while( i > 10 )
do后面跟的是重復執行的代碼,while后面跟的是終止循環的條件。
for
循環代碼塊一定的次數
for(var a = 5; a < 10; a = a + 1){
console.log( a );
}
for循環里依然可以使用if...else語句:
for(var a = 1; a < 10; a = a + 1){
if(a == 3 || a == 6){
console.log(a + '!!!');
}else{
console.log(a);
}
}
for循環break:
for(var a = 1; a < 10; a = a + 1){
if(a == 3){
break; //跳出循環
}
console.log(a);
}
for循環continue:
for(var a = 1; a < 10; a = a + 1){
if(a == 3){
continue; //跳出本次循環執行下一次循環
}
console.log(a);
}
for循環里面還可以再嵌套for循環:
var count = 0;
for(var i = 0; i < 2; i++){
console.log('i------------:', i );
for(var j = 0; j < 3; j++){
console.log('j:', j);
count++;
}
}
console.log( count );
for ... in
遍歷對象
var obj = {"name":"cjj","age":22}
for( var key in obj ){
console.log( obj[key] );
}
在原型上擴展方法也會被for...in出來
Object.prototype.test = "web";
var obj = {"name":"cjj","age":22}
for(var key in obj){
console.log( obj[key] );
}
如果不想遍歷原型上的方法,如何解決:
Object.prototype.test = "web";
var obj = {"name":"cjj","age":22}
for(var key in obj){
if( obj.hasOwnProperty(key) ){
console.log( obj[key] );
}
}
一個對象是否可以使用for...in來枚舉,可以通過propertyIsEnumerable來判斷,返回Boolean。
object.propertyIsEnumerable(proName)