3.6 语句(JavaScript高级程序设计 第3版)

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语句在比较值时使用的是全等操作符,因此不会发生类型转换。

猜你喜欢

转载自blog.csdn.net/weixin_39752673/article/details/81221573