「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」。
众所周知,JavaScript一直在飞速的变化。新版ECMAScript有很多很棒的功能,我们大多数人都迫不及待地想要尝试一下。虽然我们之前写的代码,也可以达到同样的效果,但是使用一些JavaScript代码简化小技巧会更短更清晰。 下面是一些有用的JavaScript技能,我相信有一天会对你有所帮助!
简化代码的目的
- 立志于使用最少的代码实现最多的功能
- 可以写更多的骚操作,让代码《通俗yi懂》😀😀😀
字符串模板之标签模板
标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板 *字符 *串**就是它的参数。
function tagTemplate(params) {
console.log('params: ' + params);
}
// 标签模板方式调用;或许没什么卵用,不过是一种骚操作!
tagTemplate`666` 等于tagTemplate(666)
链判断运算符:?.
我们在实际的开发编程中,如果读取对象内部的某个属性,往往需要判断一下该对象是否存在。比如,要读取
message.body.user.firstName,安全的写法可能是这样子的:
const firstName = (message
&& message.body
&& message.body.user
&& message.body.user.firstName) || 'default';
这样的层层判断非常麻烦,因此 [ES2020] 引入了“链判断运算符”(optional chaining operator)?.,简化上面的写法。下面代码使用了?.运算符,直接在链式调用的时候判断,左侧的对象是否为null或undefined。如果是的,就不再往下运算,而是返回undefined。
const firstName = message?.body?.user?.firstName || 'default';
Null 判断运算符:??
我们平时在为变量设置默认值的时候,只要变量的值为FALSE就会为默认值,有时候我们只想要变量等于null或者undefined才设置默认值,可以这样:
// age只要为FALSE(0,空字符串等)就会触发默认值
age = age || 18
// 只有age为null或者undefined才会触发默认值
age = age ?? 18
includes方法简化if判断
// 判断一个变量是否等于多个值的时候,之前可能是这样的
if (a === '1' || a === '2') {
// TODO
}
// 使用es6的数组的includes方法即可
if(['1', '2'].includes(a)){
// TODO
}
Promise.allSettled 并行请求
allSettled方法用于同时发起多个相互不依赖的Ajax请求,当您有多个彼此不依赖的异步任务成功完成时,或者您总是想知道每个
promise的结果时,通常使用它。
const response = await Promise.allSettled([
API.getUser1(),
API.getUser2(),
API.getUser3(),
])
// 过滤掉异常数据
//下面还使用到了es6的数组的解构赋值也算一个简化代码小技巧
const [userList1, userList2, userList3] =
response.map((n) => (n.status === 'fulfilled' ? n.value : null))
欢迎大家评论区补充各种js骚操作哦😯😯😯