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

逻辑空分配运算符仅在空值或未定义(null  or undefined)时才将值分配给 a

双问号:当前面的值为 null 、undefined 时,就返回后面的值,否则取前面的值

user.userinfo.age ?? 0

双竖杠:只要前面的值转为布尔值为false时,就取后面的值(如:undefined、null、false、空字符串、数值0)

思考:双问号更适合在不知道变量 是否定义 或者 是否赋值 时的场景使用

?.可选链: 如果要表示

let test = {value: {a: '1222'}
}

如果要实现 test 存在时,返回 test.value,否则返回 undefined
则需要这样写:
let myvalue = test ?  test. value : undefined

如果用可选链语法,则可以简写为:
let myvalue = test ?. value

如果要返回 test.value.a ,则可以简写为:
let a = test ?.value?.a || 10    //如果test.value.a不存在的话 (为null或undefined) ,则返回10固定值

参考:

认识可选链和双问号语法_前端发现的博客-CSDN博客

vue项目支持js新语法可选链“?.“以及逻辑空分配(双问号)“??“_鸽子.Luna的博客-CSDN博客_vue 双问号

js 逻辑空分配双问号语法 、双竖杠语法 与 可选链语法相关推荐

  1. js中,双问号??和双竖杠||的区别

    它们的共同特点是语法一样,前面是值,后面也是值,中间是符号: 都是根据前面的值来决定到底取前面还是取后面. 双竖杠|| : 前面的值转为布尔值为  false 时,就取后面,否则取前面 如undefi ...

  2. js中双问号??和双竖杠||的区别

    双竖杠||,将前面的值自动转为布尔值并且为false时,就取后面,否则取前面,如undefined.null.false.空字符串和数值0 例:console.log(0||33)打印出33 而双问号 ...

  3. C#中双问号、双冒号等几个特殊关键字

    @:放在字符串的前面,直接让字符串原样输出.常用于:sql语句.路径等 string sql = @"select * from tablename where id = '1'" ...

  4. 双问号??在 js 中的应用

    1.什么是双问号 双问号是ES2020 的一个新特性,它的作用是,当一个表达式为 null 或 undefined 的时候为变量设置一个默认值. ECMAScript® 2020 Language S ...

  5. php 双问号 语法,JS 新语法「可选链」「双问号」已进入 Stage 3

    你可能写过这样的代码 var street = user.address && user.address.street; 复制代码 有了这个新语法,你可以写成 var street = ...

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

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

  7. 【JS】问号点(?.)和双问号(??)的用法

    1. 问号点(?.) 当访问多层对象属性(比如 res.data.list)时,如果属性res.data为空,则会报引用错误,为此我们不得不这么处理: let dataList = res & ...

  8. vue 双问号语法编译报错

    如上图,使用了??语法,编译报错,遇到三次,总是忘记解决方案,做个记录,供参考 解决方案: 首先,升级babel到7.0以上,升级操作如下: npm install babel-upgrade -g ...

  9. 【JS】问号点和双问号的用法

    1. 问号点(?.)     当访问多层对象属性(比如 res.data.list)时,如果属性res.data为空,则会报引用错误,为此我们不得不这么处理: 1 let dataList = res ...

最新文章

  1. block(六)循环引用-b
  2. mysql 表的timestamp为自动添加
  3. combobox 取消记忆功能_南京长江大桥桥头堡空间改造设计,记忆与纪念的共鸣
  4. c++ primer 5th第13章拷贝控制知识点和自编习题答案
  5. 判断扫码是支付宝还是微信
  6. 深入理解Activity启动流程(二)–Activity启动相关类的类图
  7. linux下远程登录如何退出,Ubuntu 中rdesktop如何切换和退出远程桌面
  8. .Net判断一个对象是否为数值类型探讨总结(高营养含量,含最终代码及跑分)...
  9. Linux换行符与windows换行符
  10. 【无标题】计算机一级考试MS OFFICE选择题题库10套及答案
  11. 【高级UI】【027】RecyclerView侧滑源码解析
  12. iOS 1 到 iOS 10 ,我都快老了
  13. 高等数学笔记-苏德矿-第十章-曲线积分和曲面积分-第七节-高斯公式与斯托克斯公式
  14. 书架html5,基于HTML5 Canvas的CSG构造实体几何书架
  15. 国产化服务器安装Mysql数据库
  16. DELPHI各种颜色表达式
  17. 使用window小娜实现文本转语音
  18. “微风”吹拂,心旷神怡-微营销指导笔记1-前言
  19. 跨考计算机面试英语自我介绍,2019考研复试面试英语自我介绍范文(1)
  20. python计算机视觉编程——立体图像之计算视差图

热门文章

  1. OPPO Enco Free2质量怎么样?降噪表现突出路上不怕吵
  2. python画图工具turtle、matplotlib学习
  3. 蓝桥真题 2019_3_数列求解
  4. 3.0、Hibernate-延迟加载 1
  5. 01 【eCharts样式定制系列】柱状图修改柱状颜色、柱状形状等
  6. 计算机软件水平考试哪个比较容易,高手心得:计算机软件水平考试经验谈
  7. 2020适合计算机专业的笔记本电脑,2020年,如何选择一款适合自己的笔记本电脑,全面解析指南...
  8. 连接服务器密码显示过期,登录服务器密码过期
  9. python-数组A按照数组B顺序排序
  10. 老板,你请了多少店员帮你赶客?