javaScript代码简洁之道
1.通过条件判断给变量赋值布尔值的正确姿势 // bad if (a === "a") { b = true } else { b = false } // good b = a === "a" 2.在if中判断数组长度不为零的正确姿势// bad if (arr.length !== 0) { // todo } // good if (arr.length) { // todo } 3.同理,在if中判断数组长度为零的正确姿势// bad if (arr.length === 0) { // todo } // good if (!arr.length) { // todo } 4.简单的if判断使用三元表达式// bad if (a === "a") { b = a } else { b = c } // good b = a === "a" ? a : c 5.使用includes简化if判断// bad if (a === 1 || a === 2 || a === 3 || a === 4) { // todo } // good let arr = [1, 2, 3, 4] if (arr.includes(a)) { // todo }
巧用数组方法,尽量避免用for循环 6.使用some方法判断是否有满足条件的元素// bad let arr = [1, 3, 5, 7] function isHasNum (n) { for (let i = 0; i < arr.length; i ++) { if (arr[i] === n) { return true } } return false } // good let arr = [1, 3, 5, 7] let isHasNum = n => arr.some(num => num === n) // best let arr = [1, 3, 5, 7] let isHasNum = (n, arr) => arr.some(num => num === n) 7.使用forEach方法遍历数组,不形成新数组// bad for (let i = 0; i < arr.length; i ++) { // todo arr[i].key = balabala } // good arr.forEach(item => { // todo item.key = balabala }) 8.使用filter方法过滤原数组,形成新数组// bad let arr = [1, 3, 5, 7], newArr = [] for (let i = 0; i < arr.length; i ++) { if (arr[i] > 4) { newArr.push(arr[i]) } } // good let arr = [1, 3, 5, 7] let newArr = arr.filter(n => n > 4) // [5, 7] 9.使用map对数组中所有元素批量处理,形成新数组// bad let arr = [1, 3, 5, 7], newArr = [] for (let i = 0; i < arr.length; i ++) { newArr.push(arr[i] + 1) } // good let arr = [1, 3, 5, 7] let newArr = arr.map(n => n + 1) // [2, 4, 6, 8]
巧用对象方法,避免使用for...in 10.使用Object.values快速获取对象键值let obj = { a: 1, b: 2 } // bad let values = [] for (key in obj) { values.push(obj[key]) } // good let values = Object.values(obj) // [1, 2] 11.使用Object.keys快速获取对象键名let obj = { a: 1, b: 2 } // bad let keys = [] for (value in obj) { keys.push(value) } // good let keys = Object.keys(obj) // ["a", "b"]
巧用解构简化代码 12.解构数组进行变量值的替换// bad let a = 1, b = 2 let temp = a a = b b = temp // good let a = 1, b = 2 [b, a] = [a, b] 13.解构对象// bad setForm (person) { this.name = person.name this.age = person.age } // good setForm ({name, age}) { this.name = name this.age = age } 14.解构时重命名简化命名
有的后端返回的键名特别长,你可以这样干 // bad setForm (data) { this.one = data.aaa_bbb_ccc_ddd this.two = data.eee_fff_ggg } // good setForm ({aaa_bbb_ccc_ddd, eee_fff_ggg}) { this.one = aaa_bbb_ccc_ddd this.two = eee_fff_ggg } // best setForm ({aaa_bbb_ccc_ddd: one, eee_fff_ggg: two}) { this.one = one this.two = two } 15.解构时设置默认值// bad setForm ({name, age}) { if (!age) age = 16 this.name = name this.age = age } // good setForm ({name, age = 16}) { this.name = name this.age = age } 16.||短路符设置默认值let person = { name: "张三", age: 38 } let name = person.name || "佚名" 17.&&短路符判断依赖的键是否存在防止报错"xxx of undfined"let person = { name: "张三", age: 38, children: { name: "张小三" } } let childrenName = person.children && person.childre.name 18.字符串拼接使用${}let person = { name: "LiMing", age: 18 } // bad function sayHi (obj) { console.log("大家好,我叫" + person.name = ",我今年" + person.age + "了") } // good function sayHi (person) { console.log(`大家好,我叫${person.name},我今年${person.age}了`) } // best function sayHi ({name, age}) { console.log(`大家好,我叫${name},我今年${age}了`) } 19.函数使用箭头函数let arr [18, 19, 20, 21, 22] // bad function findStudentByAge (arr, age) { return arr.filter(function (num) { return num === age }) } // good let findStudentByAge = (arr, age)=> arr.filter(num => num === age) 20.函数参数校验// bad let findStudentByAge = (arr, age) => { if (!age) throw new Error("参数不能为空") return arr.filter(num => num === age) } // good let checkoutType = () => { throw new Error("参数不能为空") } let findStudentByAge = (arr, age = checkoutType()) => arr.filter(num => num === age)
你是因为什么原因放弃使用华为?用着挺好为什么要放弃?老子用的好好的,没放弃!带假设的问是何意图?有点良心的中国人,都不会轻易放弃华为,他代表了中国高科技企业的精神!为什么要放弃,mate40pro坚持用到华为翻
荣耀子品牌曝光!荣耀将代替华为成爸爸,最快一年成为国内第一荣耀手机脱离了华为之后,开始全面开启了市场争夺之路!荣耀手机从发布脱离华为之后的第一部手机荣耀V40开始,频繁地开启了新品发布会,荣耀数字系列的第一部手机荣耀50创造了一分钟破5亿
假如你换手机,想换什么品牌的?谢谢题主。答华为!现在用的华为麦芒5,流畅好用。华为不要和我说我是狭隘的爱国,郑强老师说过一句话一个国家的品牌连自己的国人都不买,那这个品牌还怎么成长。二战以后,日本和德国的汽车产
网上助听器为什么比专业验配中心便宜那么多?网上的便宜助听器都是不需要调试的模拟机,原本就是便宜的助听器,很多是电子厂生产的,模拟式助听器是线性放大,即对轻中重的声音同等放大,导致小声听不清,大声听的很难受,严重的甚至会损害
现在市场上手机品牌太多,到底能入手的手机有哪几种?这篇文章近8000字,属于一篇选择手机的攻略文章,看完以后会改变你对手机的认识,但由于篇幅过长,建议收藏后找时间仔细阅读,我相信可以让你得到一些收获。华为目前比较值得入手的机型不多
全球汽车芯片短缺,点燃了中国半导体的熊熊大火芯片大战,美国肯定是玩真的。那么中国应对的办法,唯一就是做出自己的高端芯片,没有第二条路可供选择。置之死地而后生,虽然悲情了一些。但无可否认,在这种绝望的情境下进行技术攻关是最容易
没有孩子能拒绝这款耳机,Tribit趣倍专业儿童耳机评测如果说要给家里的小朋友买一款蓝牙耳机的话,那我一定推荐这款Tribit趣倍儿童蓝牙无线耳机,从定位上来看,这是一款专为儿童打造的儿童头戴耳机,先不说别的,耳机造型颜值就让人有佩戴的
苹果笔记本数据迁移随着苹果笔记本的普及程度提高,好多人对苹果的OS系统也是越来越喜欢了,今天发现了一个在苹果电脑之间直接数据迁移的方法,真的是很高效,分享给大家,希望对更新换代苹果笔记本的朋友们有所
手机病毒是怎么获取手机里个人信息的?与其说手机病毒获取个人信息,倒不如说是流氓软件强迫用户打开各种权限来获取个人信息!就像下载每个app都要访问你的通讯录,或者打开摄像头麦克风权限,访问手机相册!然后上传云端服务器!
LG成功测试6G无线信号传输,是不是有点超前了?幸亏这是LG弄的。如果是华为肯定又有一堆们追着喊6G没有用了。LG手机业务都不做了,还弄6G有什么用。6G连标准都没出这是自己喊的另外微波频已经够了(再高真成微波炉了),6G顶多在
神经性耳聋戴助听器会有改善吗?感音神经性耳聋主要表现就是小声听不到,大声又太吵。戴上助听器后还是感觉听不太清楚。因为感音神经性多数都是高频损失的比较严重。在戴上助听器后我们不应该着急听清楚。而是要慢慢锻炼,让声