逻辑或运算符||、空值合并运算符??和逻辑与操作符 &&

逻辑或运算符|| 、 空值合并运算符??和逻辑与操作符 &&

区别

  • || 返回第一个值。
  • ?? 返回第一个已定义的值。

JavaScript里的假值只有false、null、undefined、空字符、0和NaN。

运算符 优先级 运算符类型 顺序
… && … 5 逻辑与 (&&) 从左到右
…|| … 4 逻辑或 || 从左到右
… ?? … 4 空值合并 (??) 从左到右

空值合并运算符 ??

空值合并运算符??value1 ?? value2只有当value1为null或者 undefined 时value2,否则取value1

说明

  • 短路运算,当左表达式为 null 或 undefined 时,不会对右表达式进行求值。
  • 不能与&&||运算符组合使用,除非使用括号明确指定了优先级
  • 常用场景:为常量提供默认值,保证常量不为null或undefined

原理

const result = value !== undefined && value !== null ? value : defaultValue;

逻辑或运算符 ||

逻辑或运算符||:如果第一个操作数为真,则返回第一个操作数的值;否则返回第二个操作数的值。

说明

  • || 是一个布尔逻辑运算符,左侧的操作数会被强制转换成布尔值
  • 短路运算,当左表达式为真时,不会对右表达式进行求值

JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,例如条件语句、||&&等。

JS中的假值: 能够转化为 true 的值叫做真值,能够转化为 false 的值叫做假值。

  • false
  • null
  • undefined
  • 0
  • NaN
  • “ ”
//{}为真值
if({
    
    })console.log('xxx') //xxx  
//[]为真值
if([])console.log('xxx') //xxx 

逻辑与操作符 &&

逻辑与操作符 &&:从左到右对操作数求值,遇到第一个假值操作数时立即返回;如果所有的操作数都是真值,则返回最后一个操作数的值。

说明

  • 短路运算,当每个操作数被转换为布尔值时,如果发现一个转换的结果是 false,那么逻辑与运算符就会停止,并返回该假操作数的原始

猜你喜欢

转载自blog.csdn.net/qq_41370833/article/details/131852698