JavaScript-流程控制语句 > 条件分支语句

表达式和语句

表达式:一个表达式可以产生一个值,有可能是运算、函数调用、有可能是字面量。表达式可以放在任何需要值的地方。特点:表达式会先执行出一个结果,然后再参与其他程序。
语句:语句可以理解为一个行为,循环语句和判断语句就是典型的语句。一个程序有很多个语句组成,一般情况下分号 ; 分割一个一个的语句。语句可以认为是给计算机的一个指令,执行这段代码。一般语句以分号结束,特殊的结构除外。
流程控制语句:通过一些特殊结构可以让 js 代码加载时,要么可以跳过一部分不加载,或者可以循环加载一段代码。包括:条件分支语句、循环语句。


if 语句

if 语句是最常用的条件分支语句,作用就是通过某个指定的判断条件,决定走哪个分支的代码。
结构如下:

if (condition expression) {
    statement1;
} else {
    statement2;
}
  • condition expression:条件表达式,可以是任意的代码或者表达式,参与程序过程都会强制得到一个布尔值执行结果。表达式,js 中遇到任何表达式都会先计算出一个结果然后才能继续参与程序。
  • statement:结构体,js 中可以用 {} 包括一行到多行语句,这些语句整体组成了一个结构体,结构体中的语句要执行就都执行,要不执行就都不执行。
  • if:如果
  • else:否则

总结:如果条件表达式为真 true,执行结构体 1,否则执行结构体 2。

注意事项

  1. if 语句可以实现选择的功能,两个分支可以选择一个执行,不会都执行。
  2. if 语句可以不写 else 分支,表示条件成立就执行后面的结构体,如果条件不成立,直接跳出 if 语句不执行。
  3. if 语句后面的机构体如果是单行语句组成,可以省略 {} 不写。不建议省略大括号,容易出现程序错误。
  4. if 语句能够控制自己内部的流程,但是不论走哪个分支,结束后都要继续执行 if 语句后面的其他语句,叫做殊途同归现象。

多分支 if 语句

包含多个判断条件,对应多个分支。
语法:if……else if……else if……else……
如果……否则如果……否则如果…… 否则……
结构如下:

if (条件1) {
    满足条件1,执行的结构体
} else if (条件2) {
    不满足条件1,满足条件2,执行的结构体
} else if (条件3) {
    不满足条件1/2,满足条件3,执行的结构体
} else {
    不满足前面所有条件,执行的结构体
}

注意事项

  1. 多分支 if 语句中可以有多个 else if 的分支,但是 else 分支只能有一个,必须出现在最后,作为备用的选项,而且 else 也可以省略不写,表示前面条件如果都不满足,直接跳出不走任何分支。
  2. 多分支 if 语句有跳楼现象:条件从上往下依次验证,如果满足了某个条件,会立即执行后面的结构体,执行完之后,不会再往后验证其他的条件了,而是从这一层直接跳楼跳出if语句,这就是跳楼现象。

if 语句嵌套

if 语句的结构体部分,代码可以是任意的代码,甚至是另外一组 if 语句,也就是 if 语句内部嵌套了 if 语句。如果想执行内部 if 语句的某个分支,必须满足外部 if 语句的条件,同时还要满足内部 if 语句的某个条件。优点是可以简化多分支 if 语句。


三元表达式

三元表达式又叫三元运算符,必须有三个操作数参与的运算。操作符号:? :
在参与 js 程序时,都必须先计算出表达式结果,才能参与后续程序,由于三元表达式具备了一些选择的效果,所以也是一种条件分支语句。

语法:boolean_expression ? true_value : false_value;

  • boolean_expression:布尔表达式,表达式在参与三元运算中必须求得一个布尔类型的值,要么是 true,要么是 false,结果作为判断依据,判断到底去:前面的值还是后面的值。
  • true_value:布尔表达式的值为真时,三元表达式的结果。
  • false_value:布尔表达式的值为假时,三元表达式的结果。

作用:根据布尔表达式的结果,如果为真,三元表达式结果就是真值,如果为假,三元表达式结果就是假值。

虽然 if 语句可以模拟三元表达式,但是三元表达式有自己的优点:

  1. 二选一的情况下,三元表达式结构更加简单。
  2. 三元表达式作为一个表达式参与程序时必须运算出结果才能参与,可以利用这个特点,将二选一结果赋值给一个变量。

遇到给一个变量根据条件二选一赋值的情况,可以使用三元表达式。


switch语句

开关语句允许一个程序求一个表达式的值,并且尝试去匹配表达式的值到一个 case 标签。如果匹配成功,这个程序执行相关的语句。
语法结构如下:

switch (表达式) {
    case 值1:
        结构体1;
        break;
    case 值2:
        结构体2;
        break;
    ……
    default: 
        结构体n;
        break;
}
  • switch:关键字表示开始进入一个开关语句。
  • 表达式:会求出一个具体的值,将这个值去与 {} 内部的 case 后面的值进行对比、匹配,如果值相等表示匹配成功。匹配相等时,方式是进行全等于匹配,不止值要相等,数据类型也要相等。
  • case:示例的意思,作为关键字后面必须跟一个空格,书写匹配的值。
  • case 后面的结构体:每个 case 匹配成功之后要执行的语句。
  • break:用于打断结构体,直接跳出程序,模拟跳楼现象。
  • default:相当于if语句中的 else,否则的情况,如果前面的 case 都不匹配,执行 default 后面的语句。

switch 语句首先会将小括号内的表达式计算出一个结果,用结果去匹配结构体内部的 case;从上往下进行匹配,如果匹配成功,会立即执行这个 case 后面的语句,直到遇到一个 break 跳出整个 switch 语句;如果前面的 case 没有匹配成功,会跳过 case 之间的语句,去匹配下一个 case,直到匹配成功,如果都不成功就执行 default 后面的语句。

注意事项

  • default 可以不写,相当于 if 语句没有 else。
  • break 关键字:根据结构需要有时必须在每个 case 后面都要写,为了模拟跳楼现象,如果不写 break,对应的 case 后面的语句执行之后,不会跳出结构体,会继续想下执行其他 case 的后面的语句,直到遇到一个 break。

总结

总结:实际工作中使用三种语句的情景。
if 语句:最常用的语句,所有的判断情况都能够书写。
三元表达式:多用于给变量赋值根据条件二选一的情况。
switch 语句:多用于给一个表达式去匹配多种固定值可能性的情况。

你可能感兴趣的:(JavaScript-流程控制语句 > 条件分支语句)