if,else一旦嵌套过多,就会变得特别特别的丑,而且只会用if,else也没啥意思对吧
下面举个例子,如果a大于b,输出’错的’,否则输出‘对的’
先看原始写法
const a = 1;
const b = 2;
let c = null
if(a>b){
c = '错的'
}else{
c = '对的'
}
console.log(c) //对的
再看这种写法
const a = 1;
const b = 2;
const c = a > b && '错的' || '对的'
console.log(c) //对的
下面来解释一下第二种写法,就是当a>b的时候就执行’错的’,否则就执行’对的’,因为我们的a小于b,所以输出’对的’
再举个例子,定义一个变量,当一个值为0时它为多少,当一个值为5时它为多少…
先看原始的if,else写法
let a = null
let b = 3
if(b == 1){
a = 1
}else if(b == 2){
a = 2
}else{
a = 3
}
console.log(a) //3
再来看一下switch写法
let a = null
let b = 3
switch (b) {
case 1 : a = 1
break;
case 2 : a = 2
break;
case 3 : a = 3
break;
default: a = 0
break;
}
console.log(a) //3
再来看一下高级写法
const b = 3
const a = (b==1 && 1) || (b==2 && 2) || (b==3 && 3) || 0;
console.log(a) //3
再来看includes方法
if(value === 'duck' || value === 'dog' || value === 'cat') {
}
const options = ['duck', 'dog', 'cat'];
if (options.includes(value)) {
}
再来看键值对方法
function del(){
console.log('删除')
};
function add(){
console.log('新增')
};
function update(){
console.log('更新')
};
let typeFn = {
'del': del,
'add': add,
'update': update
};
function process(operateType) {
typeFn[operateType]();
};
process('del'); //删除
let a = 0
let typeFn = {
'del': 1,
'add': 2 ,
'update': 3
};
function process(operateType) {
return typeFn[operateType];
};
a = process('add');
console.log(a) //2
再来看Map方法
let typeFn = new Map([
['del', function () {console.log('你好啊,李银河') }],
['add', function () {console.log('你好啊,王大卫')}],
['update', function () {console.log('你好啊,吴彦祖')}],
]);
function process(operateType) {
typeFn.get(operateType)();
};
process('update'); //你好啊,吴彦祖
再来看大小区间之间的写法
function youAreMyHero(experience) {
if (experience < 100) {
return 'a';
} else if (experience < 200 && experience >= 100) {
return 'b';
} else if (experience < 300 && experience >= 200) {
return 'c';
} else if (experience >= 300) {
return 'd';
};
};
let level = youAreMyHero(351); //d
解决:
function youAreMyHero(param) {
let experience = [300, 200, 100];
let level = ['a', 'b', 'c', 'd'];
for (let i = 0; i < experience.length; i++) {
if (param >= experience[i]) {
return level[i];
};
};
return level[level.length - 1];
};
let level = youAreMyHero(351); //d