zoukankan      html  css  js  c++  java
  • 链判断运算符

    编程实务中,如果读取对象内部的某个属性,往往需要判断一下该对象是否存在

    message = {
        body:{
            user:{
                firstName:"sufeng"
            }
        }
    }

     第1种写法:(常规)

    const  firstName = message.body.user.firstName;

    第2种写法: (&&)

    const firstName = (message
      && message.body
      && message.body.user
      && message.body.user.firstName) || 'default';

    第3种写法: (三元运算符)

    const fooValue = fooInput ? fooInput.value : undefined

    第4种写法:(链判断运算符)

    const firstName = message?.body?.user?.firstName || 'default';

        上边代码使用了?.运算符,直接在链式调用的时候判断,左侧的对象是否为null或undefined。如果是的,就不再往下运算,而是返回undefined。

        不仅,判断对象属性,也可以判断对象方法,如果存在就立即执行。

    iterator.return?.()

      上面代码中,iterator.return如果有定义,就会调用该方法,否则iterator.return直接返回undefined,不再执行?.后面的部分。

       链路运算符满足短路机制

    a?.[++x]
    // 等同于
    a == null ? undefined : a[++x]

    上边代码中,如果是undefined或null,那么x不会进行递增运算。也就是说,链判断运算符一旦为真,右侧的表达式就不再求值。

    未完,待续......
  • 相关阅读:
    序一
    Python3 网络爬虫开发实战
    爬虫笔记
    celery
    用yield实现协程 和asyncio模块
    Django学习之完成数据库主从复制、读写分离和一主多从情况下的使用办法
    Django学习之缓存和信号
    Django学习之Django-debug-toobar
    Python面向对象
    Python中 if __name__ == "__main__" 的理解
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/14705333.html
Copyright © 2011-2022 走看看