??
判断运算符??
与 ||
类似,但是更严格。用来判断运算符左侧是否为null
或undefined
时,才会返回右侧的值。
适用场景:
'' ?? 1 // ''
'' || 1 // 1
0 ?? 1 // 0
0 || 1 // 1
null ?? 1 // 1
undefined ?? 1 // 1
?.
链式判断运算符?.
判断左侧对象是否为null
或undefined
。如果是则返回null
或undefined
;否则,返回右侧的值
适用场景:
简化 &&
// 简化 &&
this.$axios.post().then((res)=>{
// if(res && res.data && res.data.id)
if(res ?. data ?. id)
if(res ?. ['data'] ?. ['id'])
})
简化 ? :
三元表达式
// 简化 '? :' 三元表达式
let dom = document.getElementById('myInput')
let val = dom ? dom.value :
let val = dom ?. value
import()
动态导入,实现按需加载普通的:
// 全部导入
import * as myModule from '/modules/my-module.js';
// 单个导入
import {myExport} from '/modules/my-module.js';
// 导入默认值
import myDefault from '/modules/my-module.js';
动态导入,可以通过一些事件去动态触发,并在导入成功后做一些操作。
import('/modules/my-module.js')
.then((module) => {
// Do something with the module.
});
// 支持使用await关键字
let module = await import('/modules/my-module.js');
PS:
请不要滥用动态导入(只有在必要情况下采用)。静态框架能更好的初始化依赖,而且更有利于静态分析工具和发挥作用
await
不再需要搭配async
使用
// import() 方法加载
const strings = await import(`/i18n/${navigator.language}`);
// 数据库操作
const connection = await dbConnector();
// 依赖回滚
let jQuery;
try {
jQuery = await import('https://cdn-a.com/jQuery');
} catch {
jQuery = await import('https://cdn-b.com/jQuery');
}
String.replaceAll()
一次性替换所有子字符串replace
仅替换第一次出现的子字符串,而replaceAll
会替换所有的。
'aaa'.replace(/a/g,'A') // 'AAA'
'aaa'.replace('a','A') // 'Aaa'
'aaa'.replaceAll('a','A') // 'AAA'
function(){
return new Proxy(obj,{
get(target, key){},
set(target, key, val){}
})
}
Promise.any
快速获取一组promise中的第一个响应promise
成功,就返回那个已成功的promisepromise
和ArrregateError
类型实例try {
const first = await Promise.any(promise)
} catch (err) {
}
// 或者
Promise.any(promise).then(
(first)=>{},
(err)=>{}
)
BigInt
数据类型用来表示任意数位的整数
JS 中的,Number类型只能安全地表示-90071992740991 (-(2^53-1))
和90071992740991(2^53-1)
之间的整数,任何超出此范围的整数值都可能失去精度。
Array.prototype.at()
获取数组指定位置的成员正数表示,从开始数第几个;负数为从末尾数。
#
标记字段被私有class ClassWithPrivateField {
#privateField;
#privateMethod() {
return 'hello world';
}
constructor() {
this.#privateField = 42;
}
}
const instance = new ClassWithPrivateField()
console.log(instance.privateField); //undefined
console.log(instance.privateMethod); //undefined
原文,公众号看到的学习一下:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务