es6 基础学习之?. ??之类的相关

ES6 和后续版本中的可选链(Optional Chaining)和空值合并(Nullish Coalescing)

可选链(Optional Chaining)?.

可选链运算符(?.)允许你在尝试访问对象的某个属性时不必明确验证该对象是否存在。如果该对象不存在,表达式会短路,返回 undefined。

基本用法:

javascript 复制代码
const user = {
  name: 'John',
  address: {
    street: '123 Main St',
  },
};

// 普通方式
const street = user && user.address && user.address.street;

// 使用可选链
const streetWithOptionalChaining = user?.address?.street;

console.log(street); // 输出 "123 Main St"
console.log(streetWithOptionalChaining); // 输出 "123 Main St"

可选链也可以用于函数调用:

javascript 复制代码
const result = someObject?.someMethod?.();

如果 someMethod 存在并且是一个函数,那么它会被调用;否则,result 会被赋值为 undefined。

空值合并(Nullish Coalescing)??

空值合并运算符(??)用于为变量设置默认值。当你希望仅在变量为 null 或 undefined 时使用默认值,而不是依赖于变量的所有假值(如 0,'',false 等),这个运算符会非常有用。

基本用法:

javascript 复制代码
const value = null;
const defaultValue = 'Default Value';

const result = value ?? defaultValue;
console.log(result); // 输出 "Default Value"

结合使用

这两个运算符经常会被结合使用,以便更简洁地处理嵌套属性和设置默认值。

javascript 复制代码
const user = {
  name: 'John',
  preferences: {
    theme: 'Dark',
  },
};

const theme = user?.preferences?.theme ?? 'Light';

console.log(theme); // 输出 "Dark"

在这个例子中,如果 user 或 preferences 为 null 或 undefined,则 theme 将被设置为默认值 'Light'。

这些是 ES6 和后续版本中可选链和空值合并的基本用法。这两个运算符都提供了一种更简洁、更安全的方式来处理 null 和 undefined,从而让代码更加易读和可维护。希望这些信息能帮助你更好地理解和使用这些特性。

相关推荐
北冥有鱼4 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
apollo_qwe7 小时前
大模型 API 接通了,AI 聊天页面为什么还是不好用?
前端·vue.js·人工智能
小郎君65812 小时前
keep-alive 页面怎么“真刷新”?别改外层 key——一个 refreshVersion 的完整实现
vue.js·算法
徐小夕12 小时前
JitWord 4.3 发布!Word 内嵌 Visio 图表、原生流程图一键无损解析
前端·vue.js·github
king王一帅15 小时前
做了三年 ProseMirror 后,我用四个月自研排版引擎实现 WPS / Google Docs 替代品,整套框架 MIT 开源
前端·vue.js·开源
仰望.1 天前
vue 表格组件 vxe-table 树表格懒加载支持拖拽排序的详细用法
前端·javascript·vue.js·vxe-table
康小旺1 天前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
vue.js·typescript
徐小夕1 天前
JitKnow AI知识库 4.7 发布|多文档推理+拖拽 Agent + 技能库,打造更懂业务的 AI 知识中台
前端·vue.js·github
u0111026751 天前
Canvas 导出 PNG 时 quality 参数为什么不起作用
前端·javascript·vue.js
计算机编程-吉哥2 天前
计算机毕业设计 基于 SpringBoot + Vue 的剧本杀系统 Java毕业设计【任务书、开题报告、中期报告、论文、源码】
java·vue.js·spring boot·毕业设计·课程设计·计算机毕业设计选题