zoukankan      html  css  js  c++  java
  • ES6系列 (03):链判断运算符和Null 判断运算符

    链判断运算符

    如果我们要获取一个对象的深层嵌套属性,例如获取文章标题res.data.article.title,为了安全起见,我们肯定不能直接这样获取,万一res对象没有article属性了呢,直接原地爆炸

    // 不安全
    const { title} = res.data.article
    

    绝大多数情况下我是这样获取

    // 安全
    const title = res&&res.data&&res.res.data.article&&res.data.article.title || '默认标题'
    

    如果嵌套层级不深的话还可以使用三目运算符,例如获取res.account

    const account = res ? res.account : '柏成'
    

    上面的写法稍微有些臃肿,如果使用链判断运算符?.可以稍稍简化些代码,是不是变得更优雅...

    const title = res?.data?.article?.title || '默认标题'
    const account = res?.account || '默认账号'
    

    Null判断运算符

    对于res?.data?.article?.title || '默认标题'来说,我们通过逻辑或运算符||指定了默认值,我们可能想的是属性titleundefinednull时启用默认值,但是呢,title属性为''false0NaN时,默认值也会生效,这就背离了我们的开发初衷
    如果使用Null判断运算符??的话,就解决了这样的问题,只有仅当??左侧为undefinednull才会启用默认值

    const title = res?.data?.article?.title ?? '默认标题'
    const account = res?.account ?? '默认账号'
    

    需要注意的是,??&&||一起使用的时候,必须用小括号表明优先级,否则会报错。

    // 报错
    title && account ?? '默认标题'
    title || account ?? '默认标题'
    
    // 不报错
    (title && account) ?? '默认标题'
    (title || account) ?? '默认标题'
    
    人间不正经生活手册
  • 相关阅读:
    Photoshop教程,视频MP4格式转换为GIF格式
    pyqgis环境配置
    R 输出函数 格式化输出 打印函数
    linux ubuntu 更改终端的默认设置,终端大小,字体
    wps 显示所有的字符,将参考文献排序,插入目录
    在 word 中 怎么让表格旋转方向
    linux argc argv
    linux 命令行的快捷键 vim
    linux 操作系统,以及一般的操作系统 所看书籍
    win 10 快速启动 某些程序
  • 原文地址:https://www.cnblogs.com/burc/p/13960187.html
Copyright © 2011-2022 走看看