js复合值合并运算符和可选链操作符的用途

原创
小哥 3年前 (2022-11-10) 阅读数 48 #大杂烩

js中??和?.的用法

js使用空值合并运算符和可选链运算符。

js中??

  • 仅当左侧为null和undefined右侧的数字仅在以下情况下返回
  • 空值合并运算符(??当左边的操作数为时,为逻辑运算符。 null 或者 undefined 返回其右操作数,否则返回左操作数。
  • 带逻辑或运算符(||与此不同,当左操作数为假值时,逻辑或运算符返回右操作数。

    console.log(null ?? 12);//12 console.log(undefined ?? 12);//12

    //短路操作 let x=0 let prop = null?.[x++]; console.log("prop",prop,x);//undefined 0

    console.log("" ?? 12);//"" console.log(0 ?? 12);//0 console.log(false ?? 12);//false

    console.log(null || 12);//12 console.log(undefined || 12);//12 console.log("" || 12);//12 console.log(0 || 12);//12 console.log(false || 12);//12

js中?.

  • 可选链条操作员( ?. )允许您读取连接对象链中深层属性的值,而无需显式验证链中的每个引用是否有效。
  • ?. 操作员的功能类似。 . 链运算符,不同的是引用为空。(null 或者 undefined) 在表达式返回值短路的情况下不会导致错误。

    const obj = { name: hello, cat: { name: world } }; const catName = obj.cat ?.name; console.log(catName);//world

    const dogName = obj.dog ?.name; console.log(dogName);//undefined

    const obj = { name: hello, cat: { name: { name111: world, sayHi() { console.log("Hi"); } }, sayHi() { console.log("Hi"); } }, }; const catName = obj.cat ?.name?.name111; console.log(catName); //world

    const catName1 = obj.cat ?.name2222?.name111; console.log(catName1); //undefined //obj的 name2222未定义属性

    //连用 const catName2 = obj.cat ?.name2222?.name111??"正好"; console.log(catName2); //正好

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门