js中双叹号(!!)和双问号(??)的含义

js中双叹号(!!)的含义

1、逻辑非(!)操作符的作用

 (逻辑非)如果操作数能够转换为true,则返回false;否则返回为true。(即取反的意思)
    

2、双叹号(!!)的作用

    双重否定即肯定
        !! --- 一般用来将后面的表达式强制转换为布尔值类型的数据(boolean),返回值为true或者false;
    

3、!! 的使用意义

1、应用场景:判断一个对象是否存在
假设有这样一个json对象:

{ color: "#E3E3E3", "font-weight": "bold" }
    
    //如果仅仅打印对象,无法判断是否存在:
    var temp = { color: "#A60000", "font-weight": "bold" };
    alert(temp);
    //结果:[object: Object]
    
    //如果对json对象实施!!,就可以判断该json对象是否存在:
    var temp = { color: "#A60000", "font-weight": "bold" };
    alert(!!temp);
    //结果:true
    

2、通过!或!!把各种类型转换成bool类型的惯例
2.1、对null的"非"返回true

//1、
    var temp = null;
    console.log(temp);
    //结果:null
    
    //2、
    var temp = null;
    console.log(!temp);
    //结果:true
    
    //3\
    var temp = null;
    console.log(!!temp); 
    //结果:false
    

2.2、对undefined的"非"返回true

//1、
    var temp;
    console.log(temp);
    结果:undefined
    
    //2、
    var temp;
    console.log(!temp);
    结果:true
    
    //3\
    var temp;
    console.log(!!temp);
    //结果:false
    

2.3、对空字符串的"非"返回true

//1、
    var temp="";
    console.log(temp);
    //结果:空
    
    //2、
    var temp="";
    console.log(!temp);
    //结果:true
    
    //3\
    var temp="";
    console.log(!!temp);
    //结果:false
    

2.4、对非零整型的"非"返回false

//1、
    var temp=1;
    console.log(temp);
    //结果:1
    
    //2、
    var temp=1;
    console.log(!temp);
    //结果:false
    
    //3\
    var temp=1;
    console.log(!!temp);
    //结果:true
    

2.5、对0的"非"返回true

//1、
    var temp = 0;
    console.log(temp);
    //结果:0
    
    //2、
    var temp = 0;
    console.log(!temp);
    //结果:true
    
    //3\
    var temp = 0;
    console.log(!!temp);
    //结果:false
    

2.6、对字符串的"非"返回false

var temp="ab";
    console.log(temp);
    //结果:ab
    
    //2、
    var temp="ab";
    console.log(!temp);
    //结果:false
    
    //3\
    var temp="ab";
    console.log(!!temp);
    //结果:true
    

2.7、对数组的"非"返回false

//1、
    var temp=[1,2];
    console.log(temp);
    //结果:1,2
    
    //2、
    var temp=[1,2];
    console.log(!temp);
    //结果:false
    
    //3\
    var temp=[1,2];
    console.log(!!temp);
    //结果:true
    


 

js中双叹号(!!)的含义

这是可选链,可以对一个为null或者undefined属性安全引用:

1,let dataList = res?.data?.list
作用就是判断这个对象(this.element)下的(businessObject)下的(value)下的(length)是否为null或者undefined,当其中一链为null或者undefined时就返回undefined,这样即使中间缺少一个属性也不会报错

2.let data = value1 ?? value2
??在value1和value2之间,只有当value1为null或者 undefined 时取value2,否则取value1(0,false,""被认为是有意义的,所以还是取value1)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值