非 false 则为 true
false 的情景:
- false
- 0
- null
- NaN
- undefined
- ”
其余的则都为 true
if else 系
- if , 如果括号内条件为真 , 则执行相关代码, 否则跳过
var
if(true){
console.log('执行');
}
- if else
主要用于两分情景, if 条件和 else 的条件为互斥
// 要么及格, 要么不及格
var a = 80 ;
if(a>=60){
console.log('及格')
}
else{
console.log('不及格')
}
- if … else if … else
将情景分成 n 份 , 份数较多, 用 swtich case 较好.
// 0-59 不及格 60-80 良好 80-100 优秀
var a = 80
if(a>=0 && a<60){
console.log('不及格')
}
else if(a>=60 && a<80){
console.log('良好')
}
else if(a>=80 && a<=100){
console.log('优秀')
}
else{
console.log('分数不合理')
}
switch case 系
除
default
外每个分支都需要加break
直接退出判断
三元分支
var a = 80
var result = a>=60? '及格': '不及格'
|| 短路分支
只有前者是
false
才会执行后面的语句
function test(a){
if(a){
a = a
}
else{
a = 1
}
}
// 等价
function test2(a){
a = a || 1;
}
分支变式
可以看出在函数体内的
swtich case
, 也可以通过return
退出分支判断, 不需break
;
// 比如根据状态码判断状态
// 1.常规
function getStatus(statusCode){
switch (statusCode) {
case 200:
return '成功'
case 404:
return '未找到'
case 405:
return '方法不允许'
default:
return '未知状态码'
}
}
// 2.索引式
var httpStatus = {
200:'成功',
404:'未找到',
405:'方法不允许'
}
function getStatus2(statusCode){
return httpStatus[statusCode] || '未知状态码';
}
实践心得
- 优先正向判断
var a = 80
// do
if(a>=60){
conosle.log('及格')
}
// do not do
if(!a<60){
console.log('及格')
}
- 建议避免 if else 过长, 可适当拆分成更小的单元再分支
// 比如上面的分数例子可以这样
var a = 80;
if(a<60){
console.log('不及格')
}
else{
if(a<80){
console.log('良好')
}
else{
console.log('优秀')
}
}