双问号??在 js 中的应用
1、什么是双问号
双问号是ES2020 的一个新特性,它的作用是,当一个表达式为 null 或 undefined 的时候为变量设置一个默认值。
ECMAScript® 2020 Language Specification
mdn 介绍:Nullish coalescing operator (??) - JavaScript | MDN
2、他和双 || (logical or operator)的区别
我的理解是,双问号是双或的子集。
双或是当左侧表达式为 false 的时候,设置右侧默认值。
强转之后为false的包括:null、undefinded、NAN、’‘、0
但是双问号,就仅仅是 过滤 null 和undefined。
3、应用
根据它的区别就可知,但我们需要过滤掉 0 和空字符串时,可以采用 逻辑或 || ,
当仅仅需要过滤 空值的时候,就 采用 ??
举个例子:
给数组对象排序,结构如下:
export interface GroupData {/** 分组名称 */name: stringdata?: ItemData[]order?: number
}
因为排序 order 是可选项,如果不用 双问号,
则代码为:
data.sort((a,b)=>(a.order ==='undefined' ? 999 : a.order)-(b.order ==='undefined' ? 999 : b.order))
如果使用可选项:
data.sort((a,b)=>(a.order ?? 999)-(b.order ?? 999))
是不是显得代码简单清晰多了。
双问号??在 js 中的应用相关推荐
- js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量)...
js中单引号和双引号的区别(html中属性规范是用双引号,js中字符串规定是用单引号)(js中单引号区别和php很像:单引号快,双引号可转义字符,双引号可解析变量) 一.总结 1.html中属性规范是 ...
- php 双问号 语法,JS 新语法「可选链」「双问号」已进入 Stage 3
你可能写过这样的代码 var street = user.address && user.address.street; 复制代码 有了这个新语法,你可以写成 var street = ...
- js中双问号??和双竖杠||的区别
双竖杠||,将前面的值自动转为布尔值并且为false时,就取后面,否则取前面,如undefined.null.false.空字符串和数值0 例:console.log(0||33)打印出33 而双问号 ...
- js中,双问号??和双竖杠||的区别
它们的共同特点是语法一样,前面是值,后面也是值,中间是符号: 都是根据前面的值来决定到底取前面还是取后面. 双竖杠|| : 前面的值转为布尔值为 false 时,就取后面,否则取前面 如undefi ...
- vue项目中使用可选链 ( ?. )和双问号 ( ??)详解
1.安装插件:@babel/plugin-proposal-optional-chaining npm install --save-dev @babel/plugin-proposal-option ...
- js 问号点操作符 (可选链 双问号)
配置使用可选链?. 和 双问号?? 语法 一.什么是可选链 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Oper ...
- 【JS】问号点(?.)和双问号(??)的用法
1. 问号点(?.) 当访问多层对象属性(比如 res.data.list)时,如果属性res.data为空,则会报引用错误,为此我们不得不这么处理: let dataList = res & ...
- C#中双问号、双冒号等几个特殊关键字
@:放在字符串的前面,直接让字符串原样输出.常用于:sql语句.路径等 string sql = @"select * from tablename where id = '1'" ...
- js中拼接字符串遇到的单引号、双引号以及转义字符问题
项目中经常遇到对ajax提交后返回的结果动态显示在页面上,这时候就需要在js中进行字符串的拼接.额...其实普通的拼接字符串并没多大难度系数,只要保证单引号和双引号相间就可以了.但是,如果在拼接字符串 ...
最新文章
- oracle insert忽略重复数据,Oracle’INSERT ALL’忽略重复项
- Linux软件包增量升级,Linux增量更新jar包内容
- charles 代理手机连不上网_手机连不上网?四种方法教你如何解决,建议收藏以备不时之需...
- Ways to 优化JAVA程序设计和编码,提高JAVA性能
- Android 监听ScrollView的滑动
- 学典教育计算机二级,层次化分类的离线中文签名真伪鉴别方法-计算机工程与应用.PDF...
- C#多线程学习(六) 互斥对象
- vue实现查询多条记录_vue.js 实现天气查询
- “2019大数据与实体经济深度融合全国行”盛大启动
- 微课|玩转Python轻松过二级(2.4节):常用内置函数用法精要3
- linux 驱动器发送信号,Linux设备驱动并发控制详解(自旋锁,信号量)
- NYOJ-背包问题(贪心)
- membercache java_Java开发中的Memcache原理及实现
- 【java笔记】线程间通信(1):等待唤醒机制
- 笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting、模型融合
- Android开发1、2周——GeoQuiz项目
- android foobar wifi,foobar2000安卓
- java中average方法_Java中的IntStream average()方法
- 【计算机网络】网关和路由器功能的有哪些不同
- LeetCode-55. 跳跃游戏