3.6.1 if 语句
语法如下:
//if else
if (condition) statementl else statement2;
//if else if else
if (condition1) statementl else if (condition2) statement2 else statement3;
但推荐代码块的方式,如下:
//if else
if(condition){
statement1;
}else{
statement2;
}
//if else if else
if(condition1){
statement1;
}else if(condition2){
statement2;
}else{
statement3;
}
3.6.2 do-while语句
do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。所以循环体内的代码至少会被执行一遍;
语法:
do {
statement
} while (expression);
例子:
var i = 0;
do {
i += 2;
}while(i < 10);
alert(i); //10
//from page 55
3.6.3 while语句
while语句属于前测试循环语句,即在循环体内的代码被执行之前,就会对出口条件求值,所以有可能循环体内的代码永远不会被执行。
语法:
while(expression) statement
例子:
var i = 0;
while (i < 10) {
i += 2;
}
//from page 55
3.6.4 for 语句
for循环是前测试循环语句,但他具有在循环之前初始化变量和定义循环后要执行的代码的能力。
例子:
var count = 10;
for (var i = 0;i < count; i++){
alert(i);
}
//from page 56
3.6.5 for-in 语句
for-in语句是一种精确的迭代语句,可以用来枚举对象的属性;
示例:
循环window对象的所有属性,每次循环时,都会将window对象中存在的一个属性名赋值给变量propName。
for (var propName in window) {
document.write(propName);
}
建议在使用for-in循环之前,先检测该对象的值不是null和undefined,确保有些浏览器不报错。
3.6.6 label语句
label语句可以在代码中添加标签,
示例:
start : for (var i=0;i < count; i++){
alert(i);
}
定义的start标签可以在将来由break和continue语句引用;加标签的语句一般都要与for语句等循环语句配合使用。
3.6.7 break 和 continue语句
break语句会立即退出循环,强制继续执行循环后面的语句;(跳出整个循环)
continue语句也会立即退出循环,但退出后会从循环的顶部继续执行。(跳过本次循环,执行下次循环)
例子:
break例子:
for (var i=1;i<10;i++){
if(i%5==0){
break;
}
alert(i);//会弹出四次,分别是1,2,3,4当循环到5时,break中断了整个循环
}
continue例子:
for (var i=1;i<10;i++){
if(i%5==0){
continue;
}
alert(i);//弹出8次,分别是,1,2,3,4,6,7,8,9, continue只中断了i=5的循环,直接跳到i=6;
}
break与label语句联合使用,这种情况多发生在循环嵌套的情况下:
var num = 0;
outermost:
for(var i=0;i<10;i++){
for(var j=0;j<10;j++){
if(i==5 && j==5){
break outermost;
}
num++;
}
}
alert(num); //55
//因为i=5并且j=5时,之前已经执行了55次,所以num得到了55次自增;如果不指向最外层,那么结果是95
//from page 59
continue与label语句联合使用
var num = 0;
outermost:
for(var i=0;i<10;i++){
for(var j=0;j<10;j++){
if(i==5 && j==5){
continue outermost;
}
num++;
}
}
alert(num); //95,由于i=5且j=5时跳到最外层,开始执行i=6之后的循环,所以只少执行了5次,如果不指向最外层,那么结果是99
//from page 59
3.6.8 with语句
with语句是为了简化多次编写同一个对象的工作,不建议使用with()语句。
//不使用with语句
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
//使用with语句
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}
//from page 60
3.6.9 switch语句
语法:
switch (expression){
case value:statement
break;
case value:statement
break;
default:statement
}
case表示:如果表达式等于这个值,就执行后面的语句。break是跳出整个switch语句,default相当于一个else。
例子:
switch(i){
case 25:
alert("25");
break;
case 35:
alert("35");
break;
case 45:
alert("45");
break;
default:
alert("Other");
}
//from page 61
也可以混合几种条件,如下:
switch(i){
case 25:
case 35:
alert("25 or 35");
break;
case 45:
alert("45");
break;
default:
alert("Other");
}
//from page 61
可以在switch语句中使用任何数据类型,包括数值,字符串,对象...,case也可以是常量、变量、表达式,如下:
switch ("hello world"){ //字符串
case "hello" + "world": //表达式
alert("Greeting was found."); //弹出Greeting was found.
break;
case "goodbye":
alert("Closing was found.");
break;
default:
alert("Unexpected message was found.");
}
switch语句在比较值时使用的是全等操作符,因此不会发生类型转换。