2.6. 流程控制语句
2.6.1. 判断
判断语句
if 语句的语法:
if (condition) statement1 else statement2
如果条件计算结果为 true,则执行 statement1;如果条件计算结果为 false,则执行 statement2。
注意:
判断的条件会发生自动类型转换:
number:如果非0为true,0为false
string:如果非null或非空为true,否则为false
undefined:false
NaN: false
对象类型:非null为true,否则为false。
2.6.2. 选择
switch 语句的语法:
switch (expression) case value: statement; break; case value: statement; break; case value: statement; break; case value: statement; break; ... case value: statement; break; default: statement;
每个情况(case)都是表示“如果 expression 等于 value,就执行 statement”。
关键字 break 会使代码跳出 switch 语句。如果没有关键字 break,代码执行就会继续进入下一个 case。
关键字 default 说明了表达式的结果不等于任何一种情况时的操作(事实上,它相对于 else 从句)。
ECMAScript 和 Java 中的 switch 语句
ECMAScript 和 Java 中的 switch 语句有两点不同。在 ECMAScript 中,switch 语句可以用于字符串,而且能用不是常量的值说明情况:
1、基本数据类型都可以传递给switch case语句。
2、case语句可以是表达式
function test6() { var color = "xx"; var value1 = "red", value2 = "green"; switch(color) { case value1: alert("红色"); break; case value2: alert("绿色"); break; default: alert("执行默认default"); } }
这里,switch 语句用于字符串 sColor,声明 case 使用的是变量 BLUE、RED 和 GREEN,这在 ECMAScript 中是完全有效的。
练习:
switch中传递boolean类型值?
var num = 20; switch(true) { case num >= 0 && num <= 10: alert("大于0小于等于10"); break; case num>10&&num<=20: alert("大于10小于等于20"); break; }
2.6.3. 循环
while 语句
while 语句是先测试循环。这意味着退出条件是在执行循环内部的代码之前计算的。因此,循环主体可能根本不被执行。
它的语法如下:
while (expression) statement
例子:
var i = 0; while (i < 10) { i += 2; }
do-while 语句
do-while 语句是后测试循环,即退出条件在执行循环内部的代码之后计算。这意味着在计算表达式之前,至少会执行循环主体一次。
它的语法如下:
do {statement} while (expression);
例子:
var i = 0; do {i += 2;} while (i < 10);
for 语句
for 语句是前测试循环,而且在进入循环之前,能够初始化变量,并定义循环后要执行的代码。
它的语法如下:
for (initialization; expression; post-loop-expression) statement
注意:post-loop-expression 之后不能写分号,否则无法运行。
例子:
iCount = 6; for (var i = 0; i < iCount; i++) { alert(i); }
这段代码定义了初始值为 0 的变量 i。只有当条件表达式(i < iCount)的值为 true 时,才进入 for 循环,这样循环主体可能不被执行。如果执行了循环主体,那么将执行循环后表达式,并迭代变量 i。
for循环中不会有局部变量,都是全局的变量。
2.6.3. for in语句
for 语句是严格的迭代语句,用于枚举对象的属性或者遍历一个数组的元素。
它的语法如下:
for (property in expression) statement
例子:
for (sProp in window) { alert(sProp); }
这里,for-in 语句用于显示 window 对象的所有属性。
2.6.4. With语句
wth语句的作用: 有了 With 语句,在存取对象属性和方法时就不用重复指定参考对象。
格式 :
with(obj){ 操作obj的属性语句; }
<script type="text/javascript"> <!— with(document){ write("您好 !"); write("<br>这个文档的标题是 : \"" + title + "\"."); write("<br>这个文档的 URL 是: " + URL); write("<br>现在您不用每次都写出 document 对象的前缀了 !"); } // --> </script>