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