详解JavaScript中if语句优化和部分语法糖小技巧推荐

详解JavaScript中if语句优化和部分语法糖小技巧推荐

目录

前言

if else 基本使用

简化if判断和优化代码

单行if else

使用&& || 优化

使用三目运算符优化

合并if

使用includes 或者indexof

使用switch流程 优化 多个if else

使用对象 key-value 优化多条if语句

使用map

推荐一些常用的JavaScript语法糖

箭头函数

三目运算符处理函数

函数默认参数处理

数据类型转换

Null、Undefined 布尔值等特殊值处理,使用||结合!

链判断运算符

链判断运算符

空值合并操作符 ??

概念

源码地址

小结

前言

在前端日常开发过程中,if else判断语句使用的次数应该是比较频繁的了,一些较为复杂的场景,可能会用到很多判断,在某个代码块使用很多if else时,代码会显得较为冗余,阅读起来不够清晰。

除了if else,在开发过程中,还经常使用 逻辑运算符 && || 以及三木运算符? : 等。

if else 基本使用 let name = "zhangsan"; if (name === "zhangsan") { console.log("zhangsan"); // zhangsan } else { console.log("lisi"); } 简化if判断和优化代码 单行if else if (name === "zhangsan") console.log("zhangsan"); else console.log("lisi"); 使用&& || 优化 let userInfo = { name: "zhangsan", }; if (userInfo.name === "zhangsan") { console.log("zhangsan"); } if (!userInfo.age) { // userInfo.age--> false age属性不存在 console.log("年龄属性不存在"); } userInfo.name === "zhangsan" && console.log("zhangsan"); userInfo.age || console.log("年龄属性不存在"); // 年龄属性不存在 使用三目运算符优化 let name = "zhangsan"; name === "zhangsan" ? console.log("zhangsan") : console.log("lisi"); 合并if let userObj = { name: "zhangsan", children: { name: "lisi" } }; if (userObj.children) { if (userObj.children.name == "lisi") { console.log(userObj.children.name); } } if (userObj.children && userObj.children.name == "lisi") console.log(userObj.children.name); 使用includes 或者indexof let age = "22"; if (age == "22" || age == "24" || age == "25") { console.log(age); } let ageArray = ["22", "24", "25"]; if (ageArray.includes(age)) { console.log(age); } if (ageArray.indexOf(age) > -1) { console.log(age); } 使用switch流程 优化 多个if else let val = "lisi"; switch (val) { case "zhangsan": console.log(val); break; case "lisi": console.log(val); break; case "xiaoming": console.log(val); break; case "xiaowang": console.log(val); break; default: console.log(val); } 使用对象 key-value 优化多条if语句 let userArray = [ { name: "zhangsan" }, { name: "lisi" }, { name: "xiaoming" }, { name: "xiaowang" }, ]; // 多重if else if (userArray.name === "zhangsan") { console.log(userArray.name); } else if (userArray.name === "lisi") { console.log(userArray.name); } else if (userArray.name === "xiaoming") { console.log(userArray.name); } else if (userArray.name === "xiaowang") { console.log(userArray.name); } else { console.log("其他用户"); } function getUser(username) { return userArray.filter((item) => item.name == username)[0]; } console.log(getUser("zhangsan")); 使用map let filterUser = function (username) { return `名字是${username}`; }; let userMap = new Map([ ["zhangsan", filterUser("zhangsan")], ["lisi", filterUser("lisi")], ["xiaoming", filterUser("xiaoming")], ["xiaowang", filterUser("xiaowang")], ]); console.log(userMap.get("zhangsan")); // 名字是zhangsan 推荐一些常用的JavaScript语法糖 箭头函数 /** * 箭头函数 * * */ function userInfo(name, age) { return `名字是:${name},年龄是:${age}`; } let userInfo = (name, age) => `名字是:${name},年龄是:${age}`; console.log(userInfo("zhangsan", "23")); 三目运算符处理函数 function log1() { console.log(1); } function log2() { console.log(2); } let num = 2; if (num === 1) { log1(); } else { log2(); } num === 1 ? log1() : log2(); 函数默认参数处理 let getUser = (name = "zhangsan", age = 23) => `名字是:${name},年龄是:${age}`; console.log("默认参数", getUser()); console.log("传参", getUser("lisi", 29)); 数据类型转换 let num1 = +"123"; console.log(num1); Null、Undefined 布尔值等特殊值处理,使用||结合! /** * * Null、Undefined 布尔值等特殊值处理,使用||结合! * * */ let name1 = undefined; let name2 = null; let name3 = true; let name4 = false; let name5 = "lisi"; console.log(name1 || "其他人"); // 其他人 console.log(name2 || "其他人"); // 其他人 console.log(name3 || "其他人"); // true console.log(!name3 || "其他人"); // 其他人 console.log(name4 || "其他人"); // 其他人 console.log(name5 || "其他人"); // lisi console.log(!name5 || "其他人"); // 其他人 链判断运算符

?.运算符在运算过程中,会首先从左到右执行,左侧的对象是否为null或undefined。如果是的,就不再往右边执行运算,而是返回undefined

更多链判断运算符请参考

链判断运算符

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining

let user = { name: "zhangsan", children: { name: "lisi", children: { name: "xiaoming" } }, }; let name1 = user?.name; let name2 = user?.children?.name; let name3 = user?.children?.children?.name; console.log(name1); console.log(name2); console.log(name3); 空值合并操作符 ?? 概念

空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。

与逻辑或操作符(||)不同,逻辑或操作符会在左侧操作数为假值时返回右侧操作数。

如果使用 || 来为某些变量设置默认值,可能会遇到意料之外的行为。比如为假值(例如,'' 或 0)时。

const foo = null ?? "default string"; const test = undefined ?? "default string"; const test1 = 123 ?? "default string"; console.log(test); // "default string" console.log(foo); // "default string" console.log(test1); // 123 const baz = 0 ?? 42; console.log(baz); // 0 const str = "" ?? 42; const str1 = "" || 42; console.log(str); // "" console.log(str1); // 42 小结

以上就是对于if代码优化的一些建议,if else 在使用过程中,有时候会相对繁琐一些,但是也是较为直接的判断语句

是否优化if语句,还是要根据具体的业务场景,具体去做,需要个人进行判断

JavaScript的语法糖在日常开发过程中,可以省去一些繁琐的判断或者说语义化

ES6或者更高版本的ECMA语法更新了不少,对于一些语法的扩展,在开发过程中还是提供了不少帮助。

源码地址

码云 https://gitee.com/lewyon/vue-note

githup https://github.com/akari16/vue-note

到此这篇关于JavaScript中if语句优化和部分语法糖小技巧推荐的文章就介绍到这了,更多相关js if语句优化内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    excel怎么用乘法函数

    excel怎么用乘法函数,乘法,函数,哪个,excel乘法函数怎么用?1、首先用鼠标选中要计算的单元格。2、然后选中单元格后点击左上方工具栏的fx公

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    优化PostgreSQL中的批量更新性能

    优化PostgreSQL中的批量更新性能,数据,表格,在Ubuntu 12.04上使用PG 9.1. 我们目前需要24小时才能运行大量UPDATE数据库上的语句,其形式

    excel中乘法函数是什么?

    excel中乘法函数是什么?,乘法,函数,什么,打开表格,在C1单元格中输入“=A1*B1”乘法公式。以此类推到多个单元。1、A1*B1=C1的Excel乘法公式

    标准差excel用什么函数?

    标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输入l标准差公式函数公式“=STDEVPA(C2:C6)”。按下回车,求出标准公差值。详细

    1799元MSI990fxAMD推土机新产品推荐

    1799元MSI990fxAMD推土机新产品推荐,,  AMD的推土机架构平台一直收到了许多人的关注,虽然其平台的最新一代AM3+接口的处理器还没有上市,但

    512内存的电脑优化|笔记本内存512

    512内存的电脑优化|笔记本内存512,,1. 笔记本内存512够用,因为运行非常流畅,苹果笔记本 16g512的运行内存是16g内存,机身内存是512g内存,运行