再读斋

JavaScript④流程语句

循环语句

while

1
2
3
while (条件表达式) {
//循环执行代码段
}

do-while

do-while 语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。 换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次。

1
2
3
do {
//代码执行主体
} while (条件表达式);

for

1
2
3
4
for (var i = 0; i < array.length; i++) {
array[i]
//代码执行的主体
}

for-in

for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性。

1
2
3
4
5
for (var variable in object) {
if (object.hasOwnProperty(variable)) {
//代码执行主体
}
}

注意事项

  • ECMAScript 对象的属性没有顺序。因此,通过 for-in 循环输出的属性名的顺序是不可预测的。
  • 如果表示要迭代的对象的变量值为 null 或 undefined , for-in 语句会抛出错误。 ECMAScript 5 更正了这一行为;对这种情况不再抛出错误,而只是不执行循环体。

跳转语句

  • return:终止函数体的运行,并返回一个值
  • break:终止整个循环,不再进行判断
  • continue:结束本次循环,接着去判断是否执行下次循环

label语句

使用 label 语句可以在代码中添加标签,以便将来使用。以下是 label 语句的语法:

label: statement

下面是一个示例:

1
start: for (var i=0; i < count; i++) { alert(i); }

这个例子中定义的 start 标签可以在将来由 break 或 continue 语句引用。加标签的语句一般都 要与 for 语句等循环语句配合使用。

选择语句

选择语句,有三个,if和switch、?:三目运算符

if

1
2
3
4
5
6
7
if(条件表达式1){
代码段1
}else if(条件表达式2){
代码段2
}else{
代码段3
}

switch

1
2
3
4
5
6
7
8
switch(条件表达式){
case 标签1:
代码段1
break;
……
default:
代码段n;
}

switch 语句中使用任何数据类型(在很多其他语言中只能使用数值),无论是字符串,还是对象都没有 问题。其次,每个 case 的值不一定是常量,可以是变量,甚至是表达式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
switch ("hello world") {
case "hello" + " world":
console.log("Greeting was found.");
break;
case "goodbye":
console.log("Closing was found.");
break;
default:
console.log("Unexpected message was found.");
}
var num = 25;
switch (true) {
case num < 0:
console.log("Less than 0.");
break;
case num >= 0 && num <= 10:
console.log("Between 0 and 10.");
break;
case num > 10 && num <= 20:
console.log("Between 10 and 20.");
break;
default:
console.log("More than 20.");
}

switch 语句在比较值时使用的是全等操作符,因此不会发生类型转换(例如, 字符串”10”不等于数值 10)。

with语句

with 语句的作用是将代码的作用域设置到一个特定的对象中。with 语句的语法如下:

1
with(expression) statement;

严格模式下不允许使用 with 语句,否则将视为语法错误。由于大量使用 with 语句会导致性能下降,同时也会给调试代码造成困难,因此 在开发大型应用程序时,不建议使用 with 语句。

刘涤生 wechat