?.和??运算符

??运算符:等同于||运算符(但是会默认忽略0和空字符串为真)

		  
            console.log('aa' || 22);  //'aa'
            console.log(2 || 'aa');  //2
            console.log(33 || 'aa');  //33
            console.log(undefined || 'aa'); //'aa'
            console.log(0 || -1);  //-1

            console.log('aa' ?? 33); // 'aa'
            console.log(0 ?? 22); //0 
            console.log("" ?? -1);  //"" 默认忽略0和空字符串
            console.log(null ?? 'aa'); //aa

?.运算符:等同于&&运算符(obj.name?.a?.c 当其中一链为null或者undefined时就返回undefined,这样即使中间缺少一个属性也不会报错。)

            const obj = {name: '小明',age: 18};
            // console.log(obj.name.a.c && obj.name); //会报错
            console.log(obj.age && obj.name); // 小明(显示最后条件成立的)
            console.log(obj.name?.a?.c);  //undefined
            console.log(obj.name.c); //undefined
            console.log(obj.name.c.d); //报错
posted on 2023-09-09 06:11  Steven_YF  阅读(6)  评论(0编辑  收藏  举报