JavaScript的控制结构和C与Java里的类似。条件语句支持if...else
和switch
。循环支持while
、do...while
和for
。
1.4.1 条件语句
首先我们看一下如何构造if...else
条件语句。有几种方式。
如果想让一个脚本仅当条件是true
时执行,可以这样写:
var num = 1;if (num === 1) { console.log("num is equal to 1");}
如果想在条件为true
的时候执行脚本A,其他情况下都执行脚本B,可以这样写:
var num = 0;if (num === 1) { console.log("num is equal to 1");} else { console.log("num is not equal to 1, the value of num is " +num);}
if...else
语句也可以用三元操作符替换,例如下面的if...else
语句:
if (num === 1){ num--;} else { num++;}
可以用三元操作符替换为:
(num === 1) ? num-- : num++;
如果我们有多个脚本,可以多次使用if...else
,根据不同的条件执行不同的语句:
var month = 5;if (month === 1) { console.log("January");} else if (month === 2){ console.log("February");} else if (month === 3){ console.log("March");} else { console.log("Month is not January, February or March");}
最后,还有switch
语句。如果要判断的条件和上面的一样(但要和不同的值进行比较),可以使用swtich
语句:
var month = 5;switch(month) { case 1: console.log("January"); break; case 2: console.log("February"); break; case 3: console.log("March"); break; default: console.log("Month is not January, February or March");}
对于switch
语句来说,case
和break
关键字的用法很重要。case
判断当前switch
的值是否和case
分支语句的值相等。break
会中止switch
语句的执行。没有break
会导致执行完当前的case
后,继续执行下一个case
,直到遇到break
或switch
执行结束。最后,还有default
关键字,在表达式不匹配前面任何一种情形的时候,就执行default
中的代码(如果有对应的,就不会执行)。
1.4.2 循环
在处理数组元素时会经常用到循环(数组是下一章的主讲内容)。在我们的算法中也会经常用到for
循环。
JavaScript中的for
循环与C和Java中的一样。循环的计数值通常是一个数字,然后和另一个值比较(如果条件成立就会执行for
循环中的代码),之后这个数值会递增或递减。
在下面的代码里,我们用了一个
for
循环。当i
小于10时,会在控制台中输出其值。i
的初始值是0,因此这段代码会输出0到9。for (var i=0; i<10; i++) { console.log(i);}
我们要关注的下一种循环是
while
循环。当while
的条件判断成立时,会执行循环内的代码。下面的代码里,有一个初始值为0的变量i
,我们希望在i
小于10时输出它的值。输出会是0到9:var i = 0;while(i<10){ console.log(i); i++;}
do...while
循环和while
循环很相似。区别是在while
循环里,先进行条件判断再执行循环体中的代码,而在do...while
循环里,是先执行循环体中的代码再判断循环条件。do...while
循环至少会让循环体中的代码执行一次。下面的代码同样会输出0到9:var i = 0;do { console.log(i); i++;} while (i<10)