美文网首页
js中的"??"和"?."的含义和使用

js中的"??"和"?."的含义和使用

作者: 思不凡语不浮 | 来源:发表于2022-12-22 15:08 被阅读0次

1,相信大家经常会碰到 “默认值”的问题。比如某个变量没有值时 使用固定的默认值,如:

// 从后端请求  或  其他地方 获取某值
let val = xxx;
// 如果没有值 赋值默认值1
if (!val) val = 1;
// 简写
val = xxx || 1;

如果 val 值可能为0,空字符串,false;上述代码就不能满足了,?? 的用处就来了,如:

// 不用??
if (!val && val !== 0) val = 1;
// 使用??
val = xxx ?? 1;
// ?? 左边为 0 , "",false 时  val取左边 而不是右边 1

?? 表示:只有左侧的值为null或undefined的时候才使用右侧的值。
所以 xxx 为 0 , "",false 时,val 取左边值,而不是右边。

2,可选链操作符 ?.
取对象中的某个属性值,当对象可能为空时,取值经常报错,需要判断,如:

let x = {}; // x是对象时
console.log(x.a) // 直接取值 undefined

let x; // x为undefined 时
console.log(x.a) // 直接取值 则会报错 'a'没有定义
if (x)  console.log(x.a); // 先判断再 取属性 防止报错

// 链式取值 ?.
console.log(x?.a) // 先判断了 x中是否有a,没有直接返回 undefined
let x = {a: 1};
console.log(x?.a) // 判断 x中有a,返回 x.a 1

?. 允许读取连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。

相关文章

  • js中.?、??、??=的用法和含义

    · ?. 后面跟不存在的属性 也不会报错,返回 undefined // 可选链(.?)· ?? 赋值给前面,当前...

  • Swift & JS

    1.使用JS文件中的方法和变量 2.直接使用OC中写JS语句来调用 3.OC中的方法写入JS,JS可以使用OC中的...

  • JS中switch和if语句的使用和区别

    1.选择结构if语句格式及其使用 A:if语句的格式: if(比较表达式1) { 语句体1; }else if(比...

  • js中的hasOwnProperty和isPrototypeOf

    [js中的hasOwnProperty和isPrototypeOf方法使用实例]

  • js中this的指向和new的使用

    注意:其实js和css的比较是为了让读者能够更好的理解原型(prototype)是什么

  • JS逆向:arguments 的含义和用法

    了解这个对象之前先来认识一下javascript的一些功能: 其实Javascript并没有重载函数的功能,但是A...

  • js中的 || 和 &&

    ||和&& var a = a || {}在js中,|| 以及 &&,进行运算,返回的东西,一般不是true或者f...

  • JS中的{} + [] 和 [] + {}

    在Js中,由于它的弱类型语言特性,存在大量的隐式转换。基础类型(即string, boolean,number,n...

  • JS中的 || 和 &&

    &&: 输入表达式的第一个falsy值,如果都为真,输出最后一个truey值比如:1 && null && 2 /...

  • js中的&&和||

    js中&&运算符优先级大于|| ?&& 和 || 的作用只有一个(定义):进行布尔值的且和或的运算。当运算到某一个...

网友评论

      本文标题:js中的"??"和"?."的含义和使用

      本文链接:https://www.haomeiwen.com/subject/qkvvqdtx.html