总结一些自己会用到的ES2020新特性
摘自:https://alligator.io/js/es2020/
1.合并空运算符:
由于JavaScript是动态类型的,因此在分配变量时,您需要牢记JavaScript对真实/错误值的处理。如果我们有一个带有某些值的对象,有时我们希望允许使用在技术上是虚假的值,例如空字符串或数字0。设置默认值很快会变得令人讨厌,因为默认值将覆盖应为有效值的值。
let person = {
profile: {
name: "",
age: 0
}
};
console.log(person.profile.name || "Anonymous"); // Anonymous
console.log(person.profile.age || 18); // 18
我们可以使用??操作符来代替||,使其类型更严格一些,这只允许在值为null或未定义时使用默认值。
console.log(person.profile.name ?? "Anonymous"); // ""
console.log(person.profile.age ?? 18); // 0
2.可选链接运算符:
与无效的合并运算符相似,JavaScript处理虚假值时可能无法按照我们的意愿行事。如果我们想要的是不确定的,我们可以返回一个值,但是如果它的路径是不确定的,该怎么办?
通过在点符号前添加问号,我们可以将值路径的任何部分设置为可选,以便我们仍然可以与之交互。
let person = {};
console.log(person.profile.name ?? "Anonymous"); // person.profile is undefined
console.log(person?.profile?.name ?? "Anonymous");
console.log(person?.profile?.age ?? 18);
3.动态引入:
如果有一个写满实用程序功能的文件,而且其中某些功能可能很少使用,那么导入其所有依赖项可能只是浪费资源。 现在,我们可以使用async / await在需要时动态导入依赖项。
const add = (num1, num2) => num1 + num2;
export { add };
const doMath = async (num1, num2) => {
if (num1 && num2) {
const math = await import('./math.js');
console.log(math.add(5, 10));
};
};
doMath(4, 2);