目录
流程控制语句(续)
-
switch-case语句
也是一种特殊的多项分支语句,是根据一个表达式的不同值来选择执行相应的语句switch(表达式){ case 值1: 语句1; break; case 值n: 语句n; break; default: 语句n+1;//以上表达式和每个值比较都是false,才执行 }
- 表达式在和case的值比较过程中,使用的是全等于,要求值和类型都相同
- 对比switch-case和if-else嵌套
switch-case在比较中只能进行全等于的比较,if-else可以使用各种比较运算,适用范围更广
结构上swith-case更为清晰合理,执行效率更高一些 - 通过为每个case后面都添加一个break语句,就可以避免同时执行多个case代码的情况,假如确实需要混合几种情况,不要忘了在代码中添加注释,说明你是有意省略了break关键字
-
wihile循环
属于前测试循环语句,也就是说,在循环体中的代码被执行之前,就会对出口条件求值。因此,循环体内的代码有可能永远不会被执行。while(循环条件){ 循环体; }
-
do-while循环
do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次。do{ 循环体; }while(循环条件);
练习:声明变量保存密码’123456’,无限循环弹出提示框,并输入密码,如果输入正确,结束循环,
-
for循环
是一种前测试循环语句,但他具有在执行循环之前初始化变量和定义循环后要执行代码的能力,使用while循环做不到的,使用for循环同样也做不到。有必要指出的是,在for循环的变量初始化表达式中,也可以不使用var关键字。该变量的初始化可以在外部执行。此外,for语句中的初始化表达式、控制表达式和循环后表达式都是可选的,将这三个表达式全部省略,就会创建一个无限循环- for(;表达式1,表达式2;) 则以条件2为主
- for(;表达式1&表达式2;) 则以先达到条件的表达式为主
- for(;表达式1|表达式2;) 则以后达到条件的表达式为主。
for(初始化表达式;控制表达式;后循环表达式){ 循环体; }
-
beak
再循环体中使用,用于强制结束循环,出现break后,循环体剩余语句及后续循环不再执行。
练习:使用break循环产生1~10之间所有整数,并计算他们的乘积;
-
continue
跳过剩余部分的循环体,还会继续执行步长(后续的循环)
练习:打印1~100之间所有的奇数;要求使用continue,如果遇到偶数就跳过
-
for-in
for-in语句是一种精准的迭代语句,可以用来枚举对象的属性。for (var key in window) { document.write(key); }
这个例子中我们使用for-in循环来显示了BOM中window对象的所有属性。每次执行循环时,都会将window对象中存在的一个属性名赋值给变量key。这个过程会一直持续到对象中的所有属性都被枚举一遍为止。ECMAScript对象的属性是没有顺序,因此,通过for-in循环输出的属性名的顺序是不可预测的,因浏览器而异。
-
label
使用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;//若没有跳到label标签,break只跳出一个for循环 } num++; } } console.log(num);//输出55,若没有label标签,输出95
这个例子中定义的outermost签可以由break或continue语句引用。加标签的语句一般都要与for语句等循环语句配合使用
-
with语句(严格模式下允许使用with语句,会报错)
- with语句的作用是将代码的作用域设置到一个特定的对象中。with的语法如下:
with (expression) { statement; }
- with语句的作用:是将 statement 中的变量作用域添加到 expression 中,主要是为了简化多次编写同一个对象的工作
- with语句中查询变量顺序:
(1) 是否是 with语句中的局部变量,如果不是则进行(2)
(2) 是否是 expression中的变量,如果不是则进行(3)
(3) 查找更高作用域范围.var foo = 1; var bar = { foo : 2 } with (bar) { alert(foo);//2 foo = 3; alert(foo);//3 var foo = 4; alert(foo)//4 } alert(bar.foo);//4 alert(foo);//1 if(true){ foo = 5; } alert(foo);//5
- with语句的作用是将代码的作用域设置到一个特定的对象中。with的语法如下: