js -- 条件分支

261 阅读3分钟

js -- 条件分支

如果我们需要根据不同条件去处理不同的事情,可以使用以下内容。

if / else if / else

if

语法:if(条件表达式) {}

如果if中的条件表达式为true,就会执行代码块中的内容。

如果代码块只有一条语句,{}可以省略

例如

if(2>1) console.log('111');  // 111

如果满足条件后要执行多个语句,要将语句放到{}中。

例如:

if(1) {
 console.log('111');
 console.log('222');
}
// 111  222

if()else if()语句会执行括号中的表达式,并将结果转换为boolean值。

0‘’,undefind,null,NaN等值转换为false,

其他值转换为true。

else

if也可以包含一个可选的 else 块,如果if中的条件表达式不成立,就会执行else中的语句。

例如:

if(0) {
  console.log('if中的语句执行')
} else {
  console.log('else中的语句执行')
}
// else中的语句执行
多个条件else-if

如果我们需要测试一个条件的多个变体,可以使用可选的else-if

一个条件不满足,就会执行下一个条件判断。

例如:

 var year = 2015
if(year > 2021) {
  console.log('条件一')
}  else if(year >2015) {
  console.log('条件二')
} else if(year > 2010) {
  console.log('条件三')
} else {
  console.log('条件四')
}
// 条件三

多个条件都满足也只会执行第一个满足条件的。

例如:

 var w = 2015
 var h = 2016
if(w == 2015) {
   console.log('条件一')
}  else if(h == 2016) {
  console.log('条件二')
}  else {
  console.log('条件四')
}
// 条件一

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

三元表达式?:

语法: let result = condition ? value1 : value2;

计算条件结果,如果结果为真,则返回 value1,否则返回 value2

例如:

let age = 29
let num = age >20 ? 22:25
num    //  20

可以使用多个?:

例如:

let age = 23;
let message = (age < 6) ? '儿童' :
  (age < 25) ? '青年' :
  (age < 45) ? '中年' :
  '老年';
message  // 青年

可以根据条件执行不同的函数。

例如:

  function a() { console.log('a') }
  function b() { console.log('b') }
  let age = 23
  age > 20 ? a() : b()
  // a

switch

语法:
switch(x) {
  case 'value1': 要执行的内容; [break];
  case 'value2': 要执行的内容; [break];
  default: 要执行的内容; [break];
}

switch根据x值去比较每个case对应的值(严格相等),匹配成功执行相应的语句。结束(如果break存在)。

case可以有多个 例如:

let age = 20
 switch (age) {
     case '20':  console.log('字符串20');  break; 
     case 20:    console.log('数字20');  break; 
     default:    console.log('defalut');  break; 
}
//数字20

任何表达式都可以成为 switch/case 的参数

例如:

 let age = 30
 let a = 30
 switch (age + 1) {
     case '20':  console.log('字符串20');  break; 
     case 20:    console.log('数字20');  break; 
     case a+1:   console.log('数字31'); break; 
     default:    console.log('defalut'); break; 
 }
//  数字31
default

switch中default不是必须的。

如果default 存在:如果没有符合的 case,就会执行 default 代码块。

例如:

let age = 30
 switch (age) {
     case '20':  console.log('字符串20');  break; 
     case 20:    console.log('数字20');  break; 
     default:    console.log('defalut');  break; 
}
//defalut
break

break用于终止case的继续匹配。

如果没有 break,程序将不经过任何检查就会继续执行下一个 case(从第一个匹配到的case开始,直到遇到第一个break结束)。

例如:

let age = '20'
 switch (age) {
     case 40:    console.log('数字40'); 
     case 30:    console.log('数字30'); 
     case '20':  console.log('字符串20'); 
     case 20:    console.log('数字20'); break;  
     default:    console.log('defalut'); 
}
// 字符串20
// 数字20
case分组

可以多个case执行相同的内容(利用break的特点)。

例如:

 let age = 30
switch (age) {
    case 40:
    case 30:
    case '20':console.log('字符串20');   break; 
    case 20:  console.log('数字20');     break; 
    default:  console.log('defalut');   break; 
}
//  字符串20