- do-while语句
在表达式求值之前,循环体内的的代码至少被执行一次;
// 以下代码在执行前置条件运行前,先执行console.log语句,在控制台中输出:我先执行
do{
console.log("我先执行");
}while(1 > 2)
- for-in语句
用来枚举对象的属性,当改对象有属性为null或undefined时,就跳出循环,并且枚举的属性是随机的
// 枚举obj对象的所有属性
// 执行下列代码后,结果为a、b或者b、a
var obj = {
a : "a",
b : "b"
}
for(item in obj){
console.log(item);
}
- break和continue语句
都是用于在循环中精确地控制代码的执行。其中break语句会立即退出循环,强制执行循环后面的语句。而continue语句虽然也是退出循环,但退出循环后会从循环顶部继续执行(即跳出本次循环,进行下一次的循环)
- label语句
在代码中添加标签,以便未来使用,配合循环语句和break、continue语句使用:
如:配合break使用
// 以下代码输出的值为95,break跳出循环是从当前循环跳到外部循环,然后继续执行
var num = 0;
for(var i = 0; i < 10; i++){
for(var j = 0; j < 10; j++){
if(i == 5 && j == 5){
break;
}
}
num++;
}
console.log(num);
// 以下代码输出的值为55,break跳出循环是从当前循环直接跳到外部aa(label语句)环境,但不继续进入循环
var num = 0;
aa:
for(var i = 0; i < 10; i++){
for(j = 0; j < 10; j++){
if(i == 5 && j == 5){
break aa;
}
}
num++;
}
console.log(num);
如:配合continue使用
// 以下代码输出的值为99,continue跳过此次执行,继续进行循环
var num = 0;
for(var i = 0; i < 10; i++){
for(var j = 0; j < 10; j++){
if(i == 5 && j == 5){
continue;
}
}
num++;
}
console.log(num);
// 以下代码输出的值为95,continue直接跳出此煦暖,跳至aa处,继续进行外部循环
var num = 0;
aa:
for(var i = 0; i < 10; i++){
for(var j = 0; j < 10; j++){
if(i == 5 && j ==5){
continue aa;
}
}
num++;
}
console.log(num);
注意:尽可能不要是用label语句,这个语句会导致难以调试
- with语句
将代码的作用域设置到一个特定的对象中,主要是为了简化多次编写同一个对象的工作
注意:严格模式下不允许使用with语句,否则会视为语法错误;
注意:大量使用with语句会导致性能下降,同时也会给调试代码造成困难,在开发大型应用程序时,尽可能不使用with语句
- switch语句
基本语法:
switch(expression){
case value1:
statement;
break;
case value2:
statement;
break;
default:
statement;
}
switch语句中的每一种情形(case)的含义是:“如果表达式等于这个值,则执行后面的语句(statement)。而break关键字会导致代码执行跳出switch语句。如果省略break关键字,就会导致执行完当前case后,继续执行下一个case。最后的default关键字用于表达值不匹配任何一种情形的时候,执行的代码”
技巧1:当多个case都执行同一条代码时,可以将多个case合并起来(即从上至下排列),不写break,直至最后一个case再写;
技巧2:当使用在函数的最后一条语句时,可以使用return case对应执行的代码进行代码的简化
技巧3:当在switch语句中使用比较操作时,传入的值为布尔值;
注意:在switch中的所有比较都是使用全等操作,不会发生类型转换