有时我们需要根据不同条件执行不同的操作。

我们可以使用 if 语句和三元运算符 ?(也称为“问号”运算符)来实现。

“if” 语句

if(...) 语句计算括号里的条件表达式,如果计算结果是 true,就会执行对应的代码块。

例如:

var year = prompt('哪一年发布了ES2015?');

if (year == 2015) {
    alert( 'You are right!');
}

在上面这个例子中,条件是一个简单的相等性检查(year == 2015),它还可以更复杂。

布尔转换

if (…) 语句会计算圆括号内的表达式,并将计算结果转换为布尔型。(隐式转换)

回顾一下 类型转换 一介中的转换规则:

  • 数字 0、空字符串 ""nullundefinedNaN 都会被转换成 false

  • 其他值被转换为 true

所以,下面这个条件下的代码永远不会执行:

if (0) { // 0false
  ...
}

但下面的条件 —— 始终有效:

if (1) { // 1true
  ...
}

“else” 语句

if 语句有时会包含一个可选的 “else” 块。如果判断条件不成立,就会执行它内部的代码。

例如:

var year = prompt('哪一年发布了ES2015?');

if (year == 2015) {
  alert( 'You guessed it right!' );
} else {
  alert( 'How can you be so wrong?' ); // 2015 以外的任何值
}

多个条件:“else if”

有时我们有多个不同的条件,需要执行各自不同的代码块。就可以使用 else if 子句实现。

例如:

var year = prompt('哪一年发布了ES2015');

if (year < 2015) {
  alert( 'Too early...' );
} else if (year > 2015) {
  alert( 'Too late' );
} else {
  alert( 'Exactly!' );
}

在上面的代码中,JavaScript 先先检查 year < 2015。如果条件不符合,就会转到下一个条件 year > 2015。如果这个条件也不符合,则会显示最后一个 alert

可以有更多的 else if 块。结尾的 else 是可选的。

练习

根据BMI(身体质量指数)显示一个人的体型。
BMI指数,就是体重、身高的一个计算公式。公式是:
BMI =体重÷身高的平方

比如,老师的体重是81.6公斤,身高是1.71米。
那么老师的BMI就是  81.6 ÷ 1.712     等于 27.906022365856163

过轻:低于18.5
正常:18.5-24.99999999
过重:25-27.9999999
肥胖:28-32
非常肥胖, 高于32

用JavaScript开发一个程序,让用户先输入自己的体重,然后输入自己的身高(弹出两次prompt框)。
计算它的BMI,根据上表,弹出用户的身体情况。比如“过轻” 、 “正常” 、“过重” 、 “肥胖” 、“非常肥胖”。

写法 1:

//第一步,输入身高和体重
var height = parseFloat(prompt("请输入身高,单位是米"));
var weight = parseFloat(prompt("请输入体重,单位是公斤"));
//第二步,计算BMI指数
var BMI = weight / Math.pow(height, 2);
//第三步,if语句来判断。注意跳楼现象
if (BMI < 18.5) {
    alert("偏瘦");
} else if (BMI < 25) {
    alert("正常");
} else if (BMI < 28) {
    alert("过重");
} else if (BMI <= 32) {
    alert("肥胖");
} else {
    alert("非常肥胖");
}

写法 2:

//第一步,输入身高和体重
var height = parseFloat(prompt("请输入身高,单位是米"));
var weight = parseFloat(prompt("请输入体重,单位是公斤"));
//第二步,计算BMI指数
var BMI = weight / Math.pow(height, 2);
//第三步,if语句来判断。注意跳楼现象
if (BMI > 32) {
    alert("非常肥胖");
} else if (BMI >= 28) {
    alert("肥胖");
} else if (BMI >= 25) {
    alert("过重");
} else if (BMI >= 18.5) {
    alert("正常");
} else {
    alert("偏瘦");
}
用户输入成绩,
如果成绩大于等于85,那么提示优秀;
否则如果成绩大于等于70,那么提示良好;
否则如果成绩60~69,那么提示及格;
否则,不及格

一个加油站为了鼓励车主多加油,所以加的多有优惠。
92号汽油,每升6元;如果大于等于20升,那么每升5.9;
97号汽油,每升7元;如果大于等于30升,那么每升6.95
编写JS程序,用户输入自己的汽油编号,然后输入自己加多少升,弹出价格。

代码实现如下:

//第一步,输入
var bianhao = parseInt(prompt("您想加什么油?填写92或者97"));
var sheng = parseFloat(prompt("您想加多少升?"));

//第二步,判断
if (bianhao == 92) {
    //编号是92的时候做的事情
    if (sheng >= 20) {
        var price = sheng * 5.9;
    } else {
        var price = sheng * 6;
    }
} else if (bianhao == 97) {
    //编号是97的时候做的事情
    if (sheng >= 30) {
        var price = sheng * 6.95;
    } else {
        var price = sheng * 7;
    }
} else {
    alert("对不起,没有这个编号的汽油!");
}

alert("价格是" + price);
实现使用 `prompt` 进行登陆校验的代码。

如果访问者输入 `"Admin"`,那么使用 `prompt` 引导获取密码,如果输入的用户名为空或者按下了 Esc 键 —— 显示 “Canceled”,如果是其他字符串 —— 显示 “I don’t know you”。

密码的校验规则如下:

- 如果输入的是 “TheMaster”,显示 “Welcome!”,
- 其他字符串 —— 显示 “Wrong password”,
- 空字符串或取消了输入,显示 “Canceled.”。

提示:将空字符串输入,prompt 会获取到一个空字符串 `''`。Prompt 运行过程中,按下 ESC 键会得到 `null`

流程图:

文档更新时间: 2021-10-08 10:50   作者:张老师