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)