你可能写过这样的代码

var street = user.address && user.address.street;

复制代码

有了这个新语法,你可以写成

var street = user.address?.street

复制代码

你可能还写过这样的代码

var fooInput = myForm.querySelector('input[name=foo]')

var fooValue = fooInput ? fooInput.value : undefined

复制代码

有了新语法后,你可以写成

var fooValue = myForm.querySelector('input[name=foo]')?.value

复制代码

但在实际使用中,还是会有些不便,比如

const result = response?.settings?.n || 100

复制代码

你希望如果 response 或者 response.settings 或者 response.settings.n 不存在(值为 null 或者 undefined)时,result 保底值为 100。

但是上面代码在 n 为 0 的时候,也会让 result 变成 100,你实际上希望此时 result 为 0。

于是你只好把代码写成这样

const result = response?.settings?.n === undefined ? 100 : response?.settings?.n

复制代码

或者你封装一下

const result = fetch(response?.settings?.n, 100)

复制代码

现在,你可以用另一个新语法——「双问号语法 Nullish Coalescing」——来简化代码:

const result = response?.settings?.n ?? 100

复制代码

这个 ?? 的意思是,如果 ?? 左边的值是 null 或者 undefined,那么就返回右边的值。

有了这两个语法,估计以后 JS 代码中就会全是问号了!哈哈。

php 双问号 语法,JS 新语法「可选链」「双问号」已进入 Stage 3相关推荐

  1. 一阶段P1~P96(PJavaScript基础语法-dom-bom-js-es6新语法-jQuery- 数据可视化echarts 黑马pink老师前端入门基础视频教程(持续更新)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JavaScript笔记 计算机编程基础 1. 变 量 \color{red}{1. 变量} 1.变量 1. 变量概述 2. 变量的使 ...

  2. html中单引号与双引号区别,JS 和 HTML 中的单引号与双引号

    JS中的单引号与双引号 HTML中的单引号与双引号很简单,就是两个字符实体: 显示 描述 实体名称 实体编号 " 双引号.引号 " " ' 单引号.撇号 ' ' x 1 ...

  3. 可选链表达式与双问号表达式

    x?.y 如果x和y其中一个不存在,就返回undefined 如果 ?? 左边的值是 null 或者 undefined,那么就返回右边的值. 以下为代码运用案例 res可能有以下多种结果的情况 va ...

  4. 四阶段P188~P(PJavaScript基础语法-dom-bom-js-es6新语法-jQuery- 数据可视化echarts 黑 马pink老师前端入门基础视频教程(持续更新)

    JavaScript课堂笔记 JavaScript 简单类型与复杂类型 1. 简单类型与复杂类型 2. 堆和栈 3. 简单类型的内存分配 4. 复杂类型的内存分配 5. 简单类型传参 6. 复杂类型传 ...

  5. php单双引号拼接,js字符串拼接中关于单引号和双引号的那些事

    在js开发中一般我们多多少少都会用到字符串拼接,新手们经常会遇到各种错误,其中关于字符串拼接的问题尤其重要,今天来谈一谈. 1.常用字符串拼接 当我们从后台请求到数据时,传统渲染我们就会将请求到的数据 ...

  6. 「区块链游戏不是未来」—— 融了1600万美金的Mythical Games如是说

    导读:先预告一下,DappReview下一篇文章将告诉大家EOS Dapp现有的真实情况,远没有大家想得那么乐观.但诗和远方还是有的,不论是国内大厂的私有区块链+游戏的尝试,还是育碧年中公布的< ...

  7. ES11新特性_可选链操作符---JavaScript_ECMAScript_ES6-ES11新特性工作笔记064

    然后我们去看一下es11提供的这个可选链操作符 可以看到如果我们有个main方法,然后有个config参数 然后我们调用这个main方法 然后写入,db和cache,传入这个对象. 然后我们之前调用的 ...

  8. js 逻辑空分配双问号语法 、双竖杠语法 与 可选链语法

    可选链的语法允许开发者访问嵌套得更深的对象属性,而不用担心属性是否真的存在.也就是说,如果可选链在挖掘过程遇到了null或undefined的值,就会通过短路(short-circuit)计算,返回u ...

  9. js 问号点操作符 (可选链 双问号)

    配置使用可选链?. 和 双问号?? 语法 一.什么是可选链 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Oper ...

最新文章

  1. 为什么不需要对独立的jre进行环境变量配置
  2. ajax返回头部页面,ajax getResponseHeader获取中文响应头
  3. python3 识别图片文字
  4. SharePoint GridView的使用2——DataSourceView的使用
  5. sp 导出unity哪个_GitHub上发现的一个导出Unity3D场景数据的工具
  6. php性能测试xhprof,PHP性能分析之Xhprof的使用
  7. Nginx学习总结(14)——Nginx配置参数详细说明与整理
  8. 运算符重载——函数调用运算符重载
  9. 智能交通助力城市道路行车提速15%
  10. 软件工程 第四章 概要设计
  11. 《Head First》 MVC运用的设计模式
  12. 初中参观机器人博物馆的作文_参观足球机器人实验室600字作文
  13. 软件版本 —— Alpha、Beta、RC版本的区别
  14. (毕业设计资料)基于单片机自行车码表系统设计
  15. 三菱Q系列PLC基本指令讲解
  16. 一个古老故事--线程和线程池的故事
  17. 计算机表示图形的几种方法。
  18. 蚂蚁金服mPaaS 3.0发布 助力客户智能化构建超级App生态
  19. win11_中文包/中文输入法(微软拼音)设置/键盘/输入法移除win10启用单词输入法/基于英语语言包的美式键/半角切换设置开关
  20. 常见的网站攻击方式和防护方式

热门文章

  1. 多线程面试题c Linux,【多线程Linux面试题】面试问题:小伙用C语言熬… - 看准网...
  2. crt查看oracle安装目录,ORACLE 11g数据库安装步骤
  3. Python 使用pdfplumber 提取PDF页面表格的内容
  4. Java中的引用数据类型-BigDecimal
  5. linux的网卡部分
  6. python pop函数 索引_[python] 字典和列表中的pop()函数
  7. java dataurl_FileReader生成图片dataurl的分析
  8. linux的cache过高的原因定位与解决echo 3 > /proc/sys/vm/drop_caches
  9. python函数如何结束_如何在Python中结束函数
  10. 定义在计算机中怎么翻译,Profile在计算机中翻译成什么