首页 > 其他分享 >003 逻辑运算的高级用法

003 逻辑运算的高级用法

时间:2022-09-22 18:34:29浏览次数:49  
标签:逻辑运算 obj name 用法 003 var null undefined

[A] 可选链 (?.)

  场景:

    1. 开发中,我们经常使用 obj.name 的方式区获取对象的属性

    2. 而我们又无法保证obj本身一定存在,若obj为null, undefined,以及obj根本不是对象类型,执行 obj.name 就会报错

    3. 常规方法:

      var a = obj ? obj.name : ' '

  用法:

    我们也可以使用可选链来解决:

      var a = obj?.name

  计算逻辑:
    1. 当obj存在,且obj上存在name属性时,a的值才是obj.name

    2. 否则,a得到的就是undefined

    3. 这样就可以保证只有当obj.name能成功获取时,才会将其返回, 否则返回undefined,这样就可以避免掉获取obj属性失败而报错的现象出现

 

[B] 空值合并运算符 (??)

  场景:

    1. 有时候,我们需要判断变量的值是否存在(即是否为null, undefiend),但直接做判断时,值为0也会判断为false

    2. 常规写法,我们可以做多次判断:

      if (a != 0 && a) {}

  用法:

          var a = undefined
          var b = a ?? 'good'
          console.log(b)

      只有当a不是undefiend和null时,b才会等于a,否则就等于‘good’

 

[C] 空值赋值运算符 (??=)

  场景:

    无

  用法:

    var a = undefined
    var b = '200'

    a ??= 1000
    b ??= 2000

    console.log(a)
    console.log(b)

  计算逻辑:

    ??= 首先判断左侧变量是否为undefined和null,若是,则执行右侧的语句,并将返回值赋值到左侧,若不是,则左侧变量值不变,并且跳过(即不执行)右侧语句。

 

标签:逻辑运算,obj,name,用法,003,var,null,undefined
From: https://www.cnblogs.com/carreyBlog/p/16719979.html

相关文章

  • BigData——Hbase Shell的用法
    HbaseShell的用法whoami我是谁whoamiversion返回hbase版本信息versionstatus返回hbase集群的状态信息statustable_help查看如何操作表......
  • 【查漏补缺】javascript中逗号操作符的拓展用法
    1.背景:今天看Vue3文档,发现一个网格案例中有一段 reduce的写法和作用如下:arr.reduce((o,key)=>((o[key]=1),o),{})//目的==>将["name","power"]转......
  • ByteArrayOutputStream用法---读写类型数据
    ByteArrayOutputStream用法 字节数组流:ByteArrayOutputStream:  可以捕获内存缓冲区的数据,转换成字节数组。ByteArrayoutputStreambout=newByteArrayOutputStr......
  • C#-02 传入参数的一些用法2
    C#_02参数应用2一、关于“ref”局部变量和“ref”返回在前面已经明白了ref关键词传递一个对象引用给方法调用,这样在方法中对对象修改过后返回后依然可见,而ref返......
  • C#-01 关于C#中传入参数的一些用法
    实验环境  实验所处环境位于vs2019环境中学习内容一、最基础的参数传入:值参数对于这种传入,和其他的c,c++编程语言参数传入一样,没有太大差别,在这里给如下例子:虽然这......
  • vue学习笔记(二):vue目录结构,及vue组件和用法
    一、目录结构: 二、vue组件:  项目目录中的app.vue是一个顶级组件,可以删除里面的代码,然后来重新写:  注意:<template>标签下面只能有一个根元素,也就是说下面的写......
  • Java流程控制01(Scanner用法)
    使用next():packageScanner;importjava.util.Scanner;publicclassDemo01{publicstaticvoidmain(String[]args){//创建一个扫描器对象,用于接受......
  • lambdaQuery中EQ、NE、GT、LT、GE、LE的用法
    lt:lessthan小于le:lessthanorequalto小于等于eq:equalto等于ne:notequalto不等于ge:greaterthanorequalto大于等于gt:greaterthan大于lq:是小于等于Maybat......
  • Python学习:转义字符及用法、数据类型转换函数
    ASCII编码为每个字符都分配了唯一的编号,成为编码值。在Python中,一个ASCII字符除了可以用它的实体(真正的字符)表示,还可以用它的编码值表示。这种使用编码值来间接地表示字符......
  • 静态static用法
    1.静态变量将变量声明为static,就是静态变量,可以用于引用所有对象的公共属性。可以节省空间。例如一个学生类classstudent{intage;Stringname;}如果每......