ES6 拓展
约 363 字大约 1 分钟
2025-02-13
ES6 拓展
提示
ES6 是 ECMAScript 2015 的简称,是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布。
笔记内容包含es6
至最新版本
等
高级运算符
1. 可选链操作符 (?.)
允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个关引用是否有效(是否为 undefined || null)
const adventurer = {
name: "Alice",
cat: {
name: "Dinah",
},
};
// 可以简单理解为 adventurer.dog ? adventurer.dog.name : undefined
const dogName = adventurer.dog?.name;
console.log(dogName); // undefined
使用场景:当我们不确定一个对象是否存在时,调用对象属性,可以使用该操作符
2. 空值合并操作符 (??)
当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数
const foo = null ?? "default string";
console.log(foo); // "default string"
有点类似与 ||(逻辑或)
,与逻辑或的区别在于 ??
操作符对 0 和 '' 会判断为真
使用场景: 当需要把 0 或 '' 作为 真 时,使用 ?? ,否则使用 ||
3. 逻辑空赋值 (??=)
逻辑空赋值运算符(x ??= y)仅在 x 是空值(null 或 undefined)时对其赋值
const a = { duration: 50 };
a.duration ??= 10; // a.duration 存在,所以 不赋值
console.log(a.duration); // 50
a.speed ??= 25; // a.speed 不存在,所以 赋值
console.log(a.speed); // 25
使用场景: 当你需要通过 if 判断某个变量不存在时,才需要为该变量赋值时使用