跳转到内容

JavaScript语句

ECMAScript中大多数语法都体现在语句中。语句通常使用一或多个关键字完成既定任务。语句可以很简单也可以很复杂。

1. if语句

if语句是使用最频繁的语句之一,语法如下:

if(condition) statement1 else statement2

这里的条件(condition)可以是任何表达式,并且求值结果不一定是布尔值。ECMAScript会自动调用Boolean()函数将这个表达式的值转化为布尔值。如果条件求值为true,则执行语句statement1,如果求值为false,则执行statement2。这里语句可能是一行代码,也可以能是一个代码块。

js
if(i > 25)
  console.log("Greater than 25."); // 一行代码
else {
  console.log("Less than or equal to 25."); // 使用语句块(大括号)
}

这里的最佳实践是使用语句块,即使只有一行代码执行也要如此。因为语句块可以避免对什么条件下执行什么产生疑惑。

可以这样连续使用多个if语句

if(condition1) statement1 else if(condition2) statemnt2 else statement3

js
if(i > 25) {
  console.log('Greater than 25.');
}else if (i < 0) {
  console.log('Less than 0.');
}else {
  console.log('Between 0 and 25, inclusive.');
}

2. do-while语句

do-while 语句是一种后测试循环语句,即循环体中的代码执行之后才会对退出条件进行求值。换句话说,循环体内的代码至少执行一次

js
let i = 0;
do {
  i += 2;
} while(i < 10);

在这个例子中,只要i<10,循环就会重复执行。i从0开始,每次循环递增2。

提示

后测试循环经常用于这种情况:循环体内代码在退出之前至少执行一次。

3. while语句

while语句是一种先测试循环语句,即先检查退出条件,再执行循环体内的代码。因此,while循环内的代码有可能不会执行。

js
let i = 0;
while (i < 10){
  i += 2;
}

这个例子中,变量i从0开始,每次循环递增2.只要i小于10,循环就会继续。

4. for语句

for语句也是先测试语句,只不过增加了进入循环之前的初始化代码,以及循环执行后要执行的表达式

for (initialization; expression; post-loop-expression) statement

看用例

js
let count = 10;
for(let i = 0; i < count; i++) {
  console.log(i);
}

以上代码在循环开始前定义了变量i的初始值为0。然后求值条件表达式,如果求值结果为true(i < count),则执行循环体。因此循环体也可能不执行。如果循环体被执行了,则循环后表达式也会执行,以便递增变量i。for循环跟下面的while循环是一样的。

js
let count = 10;
let i = 0;
while(i < count) {
  console.log(i);
  i += 1;
}

无法通过while循环实现的逻辑也无法通过for循环实现,因此for循环只是将循环相关的代码封装在一起了而已。

在for循环的初始化代码中,其实是可以不使用变量声明关键字的。不过,初始化定义的迭代器变量在循环执行完成之后几乎不可能再用到了。因此,最清晰的写法是使用let声明迭代器变量,这样就可以将这个变量的作用域限定在循环中。

初始化、条件表达式和循环后表达式都不是必须得。因此,下面这种写法可以创建一个无穷循环。

js
for(;;){
  doSomething();
}

只是包含表条件表达式,那么for循环实际上就变成了while循环

js
let i = 0;
let count = 10;
for(; i < count;){
  console.log(i);
  i += 1;
}