那些JS易混淆的概念(二):运算符

本文介绍了JavaScript中的可选链操作符?.和??,以及逻辑运算符&&和||的用法。?.用于安全地访问可能不存在的对象属性,??则是返回第一个非null/undefined的值。还讲解了if语句中的值判断,以及==和===的区别,前者在比较前会进行类型转换,后者则进行严格相等比较。最后讨论了在实际编程中如何选择使用||和??。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、?. 值是undefined时不会报错,表示该对象中有无该属性,有才使用 obj?.name

// ?. ??是es10中出现的,需要皮质babel

        使用时需要安装插件

npm install --save-dev @babel/plugin-proposal-optional-chaining

        配置babel

// .babelrc 或者 babel.config.js 文件添加 plugins 配置

{
  "plugins": [
    "@babel/plugin-proposal-optional-chaining"
  ]

}

 

2、a() && b()

3、a() || b() 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

4、if(value) {} value:  0 、-0、null、"" 、false、undefined、NaN都是false, 其余都是 true

5、|| 和 ??区别

??处理undefined和null更为简洁,返回第一个已定义的值

||返回表达式中第一个真值

let r1 = 0 ?? 1 ?? 2 // 0
let r2 = 0 || 1 || 2 // 1

let r3 = false ?? 1 ?? 2 // false
let r4 = false || 1 || 2 // 1

6、== 和 ===

==用于一般比较,比较之前会做数据类型转换,让他们呢尽可能相等

  • -如果一个是null,一个是undefined,那么相等
  • 如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
  • 如果一个值是true/false则将其转为1/0比较
  • 如果一个值是对象,一个是数字或字符串,则尝试使用valueOf:指向对象的原始值和toString转换后比较
  • 其它就不相等了
    console.log(‘’ == 0) // true
    
    console.log([] === '') // true [].toString = ''
    
    [1,2,3,4].toString() // 1,2,3,4
    [{id: 1, name:'a'}].toString() // [object Object]

===用于严格比较 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值