- JavaScript规定了一组语句(也称为流控制语句)。从本质上看,语句定义了JavaScript 中的主要语法,语句通常使用一或多个关键字来完成给定任务。语句可以很简单,例如通知函数退出;也可以比较复杂,例如指定重复执行某个命令的次数。
一、if语句
- 大多数编程语言中最为常用的一个语句就是if 语句。以下是if 语句的语法:
if (condition) statement1 else statement2
- 业界普遍推崇的最佳实践是始终使用代码块,即使要执行的只有一行代码。因为这样可以消除人们的误解,否则可能让人分不清在不同条件下要执行哪些语句。
<script>
if (i > 25) {
alert("大于25!");
} else if (i < 0) {
alert("小于0!");
} else {
alert("在0和25之间!");
}
</script>
二、do-while语句
- do-while 语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次。以下是do-while 语句的语法:
do {
statement
} while (expression);
- 下面是一个示例:
<script>
//像do-while 这种后测试循环语句最常用于循环体中的代码至少要被执行一次的情形。
var i = 0;
do {
i += 2;
} while (i < 10);
alert(i);
</script>
三、while语句
- while 语句属于前测试循环语句,也就是说,在循环体内的代码被执行之前,就会对出口条件求值。因此,循环体内的代码有可能永远不会被执行。以下是while 语句的语法:
while(expression) statement
- 下面是一个示例:
<script>
var i = 0;
while (i < 10) {
i += 2;
}
alert(i);
</script>
四、for语句
- for 语句也是一种前测试循环语句,但它具有在执行循环之前初始化变量和定义循环后要执行的代码的能力。以下是for 语句的语法:
for (initialization; expression; post-loop-expression) statement
- 下面是一个示例:
<script>
var count = 10;
for (var i = 0; i < count; i++){
alert(i);
}
</script>
- 由于for 语句存在极大的灵活性,因此它也是JavaScript 中最常用的一个语句。
五、for-in语句
- for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性。以下是for-in 语句的语法:
for (property in expression) statement
- 下面是一个示例:
<script>
for (var propName in window) {
document.write(propName);//显示了BOM 中window 对象的所有属性。
document.write("<br>");//换行
}
</script>
- JavaScript 对象的属性没有顺序。因此,通过for-in 循环输出的属性名的顺序是不可预测的。具体来讲,所有属性都会被返回一次,但返回的先后次序可能会因浏览器而异。
- 为了保证最大限度的兼容性,建议在使用for-in 循环之前,先检测确认该对象的值不是null 或undefined
六、break和continue语句
- break 和continue 语句用于在循环中精确地控制代码的执行。其中,break 语句会立即退出循环,强制继续执行循环后面的语句。而continue 语句虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行。请看下面的例子:
<script>
var num = 0;
for (var i=1; i < 10; i++) {
if (i % 5 == 0) {
break;
}
num++;
}
alert(num); //4
</script>
- 如果在这里把break 替换为continue 的话,则可以看到另一种结果:
<script>
var num = 0;
for (var i=1; i < 10; i++) {
if (i % 5 == 0) {
continue;
}
num++;
}
alert(num); //8
</script>
七、switch语句
- switch 语句与if 语句的关系最为密切,而且也是在其他语言中普遍使用的一种流控制语句。JavaScript 中switch 语句的语法与其他基于C 的语言非常接近,如下所示:
switch (expression) {
case value: statement
break;
case value: statement
break;
case value: statement
break;
case value: statement
break;
default: statement
}
- switch 语句中的每一种情形(case)的含义是:“如果表达式等于这个值(value),则执行后面的语句(statement)”。而break 关键字会导致代码执行流跳出switch 语句。如果省略break 关键字,就会导致执行完当前case 后,继续执行下一个case。最后的default 关键字则用于在表达式不匹配前面任何一种情形的时候,执行机动代码(因此,也相当于一个else 语句)。从根本上讲,switch 语句就是为了让开发人员免于编写像下面这样的代码:
<script>
if (i == 25){
alert("25");
} else if (i == 35) {
alert("35");
} else if (i == 45) {
alert("45");
} else {
alert("Other");
}
</script>
<script>
switch (i) {
case 25:
alert("25");
break;
case 35:
alert("35");
break;
case 45:
alert("45");
break;
default:
alert("Other");
}
</script>
- 通过为每个case 后面都添加一个break 语句,就可以避免同时执行多个case 代码的情况。假如确实需要混合几种情形,不要忘了在代码中添加注释,说明你是有意省略了break 关键字,如下所示:
<script>
switch (i) {
case 25:
/* 合并两种情形 */
case 35:
alert("25 or 35");
break;
case 45:
alert("45");
break;
default:
alert("Other");
}
</script>
- 虽然JavaScript 中的switch 语句借鉴自其他语言,但这个语句也有自己的特色。首先,可以在switch 语句中使用任何数据类型(在很多其他语言中只能使用数值),无论是字符串,还是对象都没有问题。其次,每个case 的值不一定是常量,可以是变量,甚至是表达式。请看下面这个例子:
<script>
switch ("hello world") {
case "hello" + " world":
alert("你好!");
break;
case "goodbye":
alert("再见!");
break;
default:
alert("锄禾日当午");
}
</script>
- switch 语句在比较值时使用的是全等操作符,因此不会发生类型转换(例如,字符串"10"不等于数值10)。