【js】es6 可选链 ? . 和 空值合并 ? ? 运算符使对象多层判断更简洁

es6可选链?.

1.在调用函数里使用

如果我们多层的调用,直接调用当中间某层不存在时代码就会报错,如直接不判断调用ref.componentRef.instance.ngOnDestroy(),当中间某一层如instance不存在时就会报错

发现判断某个对象的函数存在才调用,通过使用es6的可选链非常方便,分享如下:

ref?.componentRef?.instance?.ngOnDestroy?.();

相当于

if (ref && ref.componentRef && ref.componentRef.instance && ref.componentRef.instance.ngOnDestroy) {
  ref.componentRef.instance.ngOnDestroy();
}

2.在做判断

if(obj?.person?.age){

}

相当于

if(obj && obj.person && obj.person.age){

}

空值合并??

空值合并也很方便,在我们默认赋值的时候很简洁的使用,当不为undefined或null,就使用??右侧的值

var age = b ?? 9;

当b为undefined或null时,age就为9,而b如果为0或者其他转换为false的值a的值还是为9的

参考:
MDN | 可选链操作符
MDN | 空值合并运算符
阮一峰 | ECMAScript 6 入门 | 运算符的扩展

要在 Vue CLI 构建的 Vue 2 老项目中添加对 ES2020 新语法可选链运算符(?.)的支持,你需要新你的项目配置和安装相应的插件。以下是步骤: 1. **检查当前支持情况**: 首先,确认你的项目是否已经使用了 Babel 或者 TypeScript 进行 ES6 以上的语言特性转码。如果没有,你将需要它们。 2. **安装依赖**: 如果你使用的是 JavaScript,可以考虑安装 `@babel/plugin-proposal-nullish-coalescing-operator` 和 `@babel/plugin-proposal-optional-chaining` 插件来引入可选链运算符。如果你已经通过 Webpack 或者 Vue CLI 的 babel 配置管理插件,可以在 `.babelrc` (`.babelrc.js` 或 `.babel.config.js`) 中添加如下内容: ```json { "plugins": [ "@babel/plugin-proposal-nullish-coalescing-operator", "@babel/plugin-proposal-optional-chaining" ] } ``` 如果你使用 TypeScript,那么 TypeScript 自带了这些新特性的支持,无需额外安装。 3. **新配置**: 如果你在使用 .vue 文件,确保 Vue CLI 的 TypeScript 或者 Babel 模板已启用。如果你使用的是 Vue CLI 3 及以上版本,可以运行 `npm run upgrade` 来新你的模板到最新版,这通常会包含新的 Babel 配置。 4. **重启服务**: 完成上述步骤后,重启你的开发服务器 (`npm run serve` 或者 `yarn serve`)以应用新的设置。 5. **开始使用可选链**: 现在你可以直接在代码中使用 `.?.` 运算符了,例如 `user?.name`。如果 `user` 为 `null` 或 `undefined`,表达式不会抛出错误,而是返回 `undefined`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值