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不会进行递增运算。也就是说,链判断运算符一旦为真,右侧的表达式就不再求值。

    未完,待续......
  • 相关阅读:
    Linux用户配置sudo权限(visudo)
    Memcached 实战
    安装完centos7 root目录下的文件anaconda-ks.cfg
    通过命令查看centos机器公网ip
    .env修改后不生效
    laravel事务回滚失败
    windows10 PHP7 Sqlserver 扩展
    PHP生成html格式数据字典
    服务器初始化脚本
    PHP导出Excel表格实例
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/14705333.html
Copyright © 2011-2022 走看看