&& 、 || 赋值计算与?

1. ||:

 首先在对于 a || b,大家都知道判断标准是只有当 a 为 false且 b 为 false时,整个语句为 假,否则为真。

因此,在 c = a ||b 中,只有当a 为 false 时才会考虑 b 的值,即:当 a 不为 false 时,等同于 c = a; 当 a 为 false 时,等同于 c = b;

2. &&:

对于 a && b. 判断标准为只有当 a 为 true 且 b 为 true 时,整个语句为真,其他的情况下整个语句为假。

因此,在 c = a && b中,只有当 a 为 true 时才会考虑 b 的值,即:当 a 为 true 时,等价于 c = b; 当a 为 false 时,等价于 c = a。

ps: 这里提及的 true 与 false 为转化为 Boolean 类型时,并非为简单的直接看其值为 true或false。

3. ?相关赋值运算

3.1 ?? 非空运算符

?? 运算符被称为非空运算符。如果第一个参数不是 null/undefined(这里只有这两个假值),将返回第一个参数,否则返回第二个参数。

console.log( undefined ?? 5); // 5
console.log( false ?? 5); // false
console.log( null ?? 5); // 5
console.log( NaN ?? 5); // NaN
console.log('' ?? 5); // ''
console.log( 0 ?? 5); // 0

3.2 ??= 空赋值运算符

??= 也被称为空赋值运算符,与 上面的非空运算符相关。联系如下:

var x = null
var y = 5
var z = undefined
console.log(x ??= y) // => 5
console.log('x',x)
console.log(z = (z ?? x)) // => 5
console.log('z',z)

3.3. ?. 链判断运算符

?. 被称为链判断运算符,用于在引用对象链中的属性值时,验证每个引用。当引用为空时,表达式停止计算并返回 undefined。

var obj = {
  index: 1,
  abcd: {
    index: 2,
    abc: {
      index: 3,
      ab: 10
    }
  }
}

console.log(obj.abcd.abc) // {index: 3, ab: 10}
console.log(obj.abcd.abc.ab) // 10
console.log(obj.abcd.abc?.bc) // undefined

4.3 ?: 三元运算符

?: 被称为 条件运算符,接受三个运算数:条件? 表达式1(条件为真时执行的表达式) :  表达式2(条件为假时执行的表达式)。

var flag = false
var value = flag ? '11' : '00'

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_陌默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值