做代码的决定——条件句

312 阅读4分钟

只需一个条件你就可以拥有……!

你是否还记得目前人生中做过最重要的决定是什么?你是否还记得你第一次做的决定?人类无时无刻不在做决定,这些决定都影响着他们的生活,从小事(“我今天吃不吃饭”)到重要的大事(“今天吃什么”),这个问题看似很小,但是懂的都懂哈。今天我们就来探讨一下重要但用的少的一种语句——条件句。

条件语句结构允许我们来描述在 JavaScript 中这样的选择,从不得不作出的选择(例如:“吃还是不吃”)到产生的结果或这些选择(也许是“吃了”可能会“仍然感觉饿,并且胖”,或者是“不吃”可能会“当你夜跑时候转角遇到的一个烧烤摊”。)

if ... else 语句

语法

当指定条件为真,if 语句会执行一段语句。如果条件为假,则执行另一段语句。

    if (条件1)
 声明

// With an else clause
if (条件2)
  声明语句1
else
  声明语句2

值为真或假的表达式,当指定条件为真,if 语句会执行一段语句。如果条件为假,则执行另一段语句。

  • condition为真时执行的语句。可为任意语句,包括更深层的内部if语句。要执行多条语句,使用块)语句({ ... })将这些语句分组;若不想执行语句,则使用空句。

  • 如果condition为假且 else从句存在时执行的语句。可为任意语句,包括块语句和嵌套的if语句。

说明

多层 if...else 语句可使用 else if 从句。注意:在 Javascript 中没有 elseif (一个单词)关键字,注意这是一个单词,所以中间必须有空格。

网上举例

为了更好的理解这种语法,让我们考虑一个真实的例子。想像一个孩子被他的父母要求帮助他们做家务。父母可能会说“嗨,宝贝儿,如果你帮我去购物,我会给你额外的零花钱,这样你就能买得起你想要的玩具了。”在 JavaScript 中,我们可以这样表示:

var shoppingDone = false;

if (shoppingDone === true) {
  var childsAllowance = 10;
} else {
  var childsAllowance = 5;
}

这段代码显示的结果是变量 shoppingDone 总是返回 false, 意味着对我们的穷孩子来说很失望。如果孩子去购物的话,就需要依靠我们提供机制来使父母把变量 shoppingDone 变成 true

逻辑运算符:&& , || 和 !

如果要测试多个条件,而不需要编写嵌套 if ... else 语句,逻辑运算符可以帮助您。当在条件下使用时,前两个执行以下操作:

  • && — 逻辑与; 使得并列两个或者更多的表达式成为可能,只有当这些表达式每一个都返回true时,整个表达式才会返回true.
  • || — 逻辑或; 当两个或者更多表达式当中的任何一个返回 true 则整个表达式将会返回 true.
  • ! — 逻辑非; 对一个布尔值取反,非 true 返回 false,非 false 返回 true.

举一个逻辑 && 的例子,刚才的那段代码片段可以写成下面这样:

if (choice === 'sunny' && temperature < 86) {
  para.textContent = 'It is ' + temperature + ' degrees outside — nice and sunny. Let\'s go out to the beach, or the park, and get an ice cream.';
} else if (choice === 'sunny' && temperature >= 86) {
  para.textContent = 'It is ' + temperature + ' degrees outside — REALLY HOT! If you want to go outside, make sure to put some suncream on.';
}

所以,只有当choice === 'sunny'并且temperature < 86都返回true时,第一个代码块才能运行。

让我们快速看一个  || 的例子:

if (iceCreamVanOutside || houseStatus === 'on fire') {
  console.log('You should leave the house quickly.');
} else {
  console.log('Probably should just stay in then.');
}

最后一种类型的逻辑运算符, **逻辑非 ! **运算符表示,可以用于对一个表达式取否。让我们把 非运算符 结合上一个例子里的 或表达式 看看:

if (!(iceCreamVanOutside || houseStatus === 'on fire')) {
  console.log('Probably should just stay in then.');
} else {
  console.log('You should leave the house quickly.');
}

在这一段代码中,如果逻辑或所在的语句返回 true,则非运算符会将其取否,于是整个表达式的返回值将会是false

条件句中当然还有switch语句等,今天if...else条件句我们就分析到这儿。

补充一个小知识点

break和continue

break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。

break语句用于跳出代码块或循环。

var i = 0;


while(i < 100) {
  console.log('i 当前为:' + i);
  i++;
  if (i === 10) break;
}
//上面代码只会执行10次循环,一旦i等于10,就会跳出循环。

常见的for也可以

for (var i = 0; i < 5; i++) {
  console.log(i);
  if (i === 3)
    break;
}
// 0
// 1
// 2
// 3
//上面代码执行到i等于3,就会跳出循环。

continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。

var i = 0;


while (i < 100){
  i++;
  if (i % 2 === 0) continue;
  console.log('i 当前为:' + i);
}
//上面代码只有在i为奇数时,才会输出i的值。如果i为偶数,则直接进入下一轮循环。