当前位置: 首页 > news >正文

JS 新操作符 —— “?.”、“??”、“??=”

JS 新操作符 —— “?.”、“??”、“??=”

1. ?. (可选链式)

说明:

  • Optional chaining,可选链式,安全地访问嵌套的对象属性

语法:

  1. obj.prop1?.prop2
  2. obj.prop1?.[expr]
  3. obj.func?.(args)

比较:

// 旧语法
// 如果 && 前一个表达式不是 假值(null、undefined、false、''、0、NaN),则执行后面的表达式
person && person.info && person.info.name// lodash.get
lodash.get(person, 'info.name');// 新语法
// 如果 ?. 前一个表达式不是 nullish(null、undefined),则执行后面的表达式
person?.info?.name

示例:

const person = {// info: {//   name: '张三',//   2: 'test',//   sayHello(name) {//     console.log('hello', name);//   }// }
}console.log( person.info?.name ); // undefinedconsole.log( person.info?.[1 + 1] ); // undefinedperson.info?.sayHello?.('王五'); // undefined

参考:

  • Optional chaining (?.) —— MDN

2. ??

说明:

  • Nullish coalescing operator
  • 逻辑运算符,如果左侧为 nullish(null、undefined)则执行右侧表达式

语法:

  • leftExpr ?? rightExpr

示例:

false || 'default' // 'default'false ?? 'default' // false

参考:

  • Nullish coalescing operator (??) —— MDN

3. ??=

说明:

  • Nullish coalescing assignment
  • 赋值操作,如果左侧为 nullish(null、undefined)则将右侧表达式的值赋给左侧

语法:

  • x ??= y

比较:

// 旧语法
x || x = y// 新语法
x ??= y// 新语法等价于
if (x == null) { // <=> (x === null || x === undefined)x = y;
}

参考:

  • Nullish coalescing assignment (??=) —— MDN

相关文章:

  • Excel 文件比较工具 xlCompare 11.01 Crack
  • Python编程陷阱(五)
  • 【Java并发编程二】线程的基本知识
  • YOLOv7独家原创改进:最新原创WIoU_NMS改进点,改进有效可以直接当做自己的原创改进点来写,提升网络模型性能精度
  • MSYS2介绍及工具安装
  • SELinux零知识学习十七、SELinux策略语言之类型强制(2)
  • excel用RAND函数、或者RAND.NV函数生成随机数、这两个函数的区别
  • NFTScan 正式上线 Viction NFTScan 浏览器和 NFT API 数据服务
  • OpenCV+特征检测
  • FDM(傅里叶分解)
  • 基于springboot实现私人健身与教练预约管理系统项目【项目源码+论文说明】
  • Pytorch np.arange函数
  • C#实现将Mysql数据迁移到SQL数据库
  • js制作九宫格抽奖功能
  • 如何在WPF应用程序中全局捕获异常
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Flannel解读
  • js ES6 求数组的交集,并集,还有差集
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Python3爬取英雄联盟英雄皮肤大图
  • Vue UI框架库开发介绍
  • Xmanager 远程桌面 CentOS 7
  • 关于List、List?、ListObject的区别
  • 回顾 Swift 多平台移植进度 #2
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端js -- this指向总结。
  • raise 与 raise ... from 的区别
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # 达梦数据库知识点
  • $$$$GB2312-80区位编码表$$$$
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)c++ std::pair 与 std::make
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)原始图像数据和PDF中的图像数据
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net Web窗口页属性
  • .NET 使用 XPath 来读写 XML 文件
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .net的socket示例
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • /bin/bash^M: bad interpreter: No such file or directory
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48