JavaScript的控制结构和C与Java里的类似。条件语句支持if...else和switch。循环支持while、do...while和for。 1.3.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.3.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)