1)利用逻辑判断的短路运算来实现 && 和 ||(&& 中第一个表达式为假就不会去处理第二个表达式,|| 则相反)
// if为真 if (bool) { value = getYes(); } // &&改版 bool && (value = getYes()); // if为假 if (!bool) { value = getNo(); } bool || (value = getNo());
2)三元运算符改写if else
// if 版本 if (bool) { value = 1; } else { value = 2; } // 三元运算符 版本 value = bool ? 1 : 2;
3)数据驱动法
function formatData(a) { let c = ""; if (a === 1) { c = "汉族"; } else if (a === 2) { c = "苗族"; } else if (a === 3) { c = "维吾尔族"; } else if (a === 4) { c = "回族"; } else if (a === 5) { c = "藏族"; } // ... 等等等等 return c; } var result = formatData(2) // 对应的苗族 数据驱动版本 const obj = { 1: "汉族", 2: "苗族", 3: "维吾尔族", 4: "回族", 5: "藏族", // ...等等等等 }; function formatData(a) { return obj[a] } var result = formatData(2); // 苗族
4)ES6 的 map 数据结构
function del(){}; // 删除操作 function add(){}; // 新增 function update(){}; // 更新 function process(operateType) { if (operateType === 'del') { del() } else if (operateType === 'add') { add() } else if (operateType === 'update') { update() }; }; process('del');// 删除 es6的map数据结构 let typeFn = new Map([ ['del', function () {/*do something*/ }], ['add', function () {/*do something*/ }], ['update', function () {/*do something*/ }], ]); function process(operateType) { typeFn.get(`${operateType}`)(); }; process('del'); // 删除
5)数组
function youAreMyHero(experience) { if (experience < 100) { return '萌新'; } else if (experience < 200 && experience >= 100) { return '骑士'; } else if (experience < 300 && experience >= 200) { return '英雄'; } else if (experience >= 300) { return '传说'; }; }; let level = youAreMyHero(351); //传说 数组替代 function youAreMyHero(param) { let experience = [300, 200, 100]; let level = ['传说', '英雄', '骑士', '萌新']; for (let i = 0; i < experience.length; i++) { if (param >= experience[i]) { return level[i]; }; }; return level[level.length - 1]; }; let level = youAreMyHero(250); //英雄
标签:function,多种,return,experience,else,let,value,替换 From: https://www.cnblogs.com/florazeng/p/17764877.html