壹影博客.
我在下午4点钟开始想你
Js问号(?)的使用技巧你知道么?
  • 2023-2-13日
  • 0评论
  • 12934围观

Js问号(?)的使用技巧你知道么?

一、问号点(?.) 

obj: {

  name: "程序员",

},



console.log(this.obj.age, "年龄");        //undefined

console.log(this.obj.hobby, "爱好");      //undefined



console.log(this.obj.age.data, "年龄");   //报错

console.log(this.obj.hobby.data, "爱好"); //报错

我们都知道第二个代码中打印的年龄和爱好是会报错的,因为我们在打印age和hobby时都已经是undefined的了,在undefined中有打印data属性肯定是没的了,也就报错了。

那我们都怎么避免这中值为空的问题而引发报错呢?

是的,我们可以使用前判断是否为空,若不为空时,我们再去拿其中的某个属性。 

console.log(this.obj.age && this.obj.age.data, "年龄", this.obj.age.data);

console.log(this.obj.hobby && this.obj.hobby.data,"爱好",this.obj.hobby.data);

在代码中可以知道,我们在获取data属性时,首先判断前面的属性不为空在去获取。

这种方式呢我们用问号点也是可以实现的。 

使用 (?.)实现判断案例: 

//this.obj.age?.data  === this.obj.age && this.obj.age.data



console.log(this.obj.age?.data, "年龄"); //undefined

console.log(this.obj.hobby.hobbydata, "爱好"); 

?.作用总结:

作用就是判断这个对象(this.obj)下的(age)下的(data)是否为null或者undefined,当其中一链为null或者undefined时就返回undefined,这样即使中间缺少一个属性也不会报错。 

二、问号问号(??) 

console.log(1 || "xx") //1

console.log(0 || "xx") //xx

console.log(null || "xx") //xx

console.log(undefined || "xx")  //xx

console.log(-1 || "xx") //-1

console.log("" || "xx") //xx



console.log(1 ?? "xx") //1

console.log(0 ?? "xx") //0

console.log(null ?? "xx") //xx

console.log(undefined ?? "xx")  //xx

console.log(-1 ?? "xx") //-1

console.log("" ?? "xx") //'' 

??作用总结:

使用方式就是与 或(||)相同用法,但是要注意的是??忽略0和空字符串等错误的值 

三、?. 与 ??联合使用 

let obj ={}

console.log(obj?.a?.b ?? 233 ) //233



let obj={a:{b:1}}

console.log(obj?.a?.b??233) //1

 

希望本教程对你有帮助~

发表评论