逻辑或和逻辑与

逻辑与和逻辑或

逻辑或

逻辑或由(||)表示,有两个操作数

逻辑或的真值表示如下:

第一个操作数第二个操作数结果
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

逻辑或操作符可以应用任何类型的操作数,而不仅仅是布尔值。如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值。遵循以下规则

  • 如果第一个操作数是对象,则返回第一个操作数
  • 如果第一个操作数的求值结果返回为false但第二个操作数是对象,则返回第二个操作数
  • 如果两个操作数都是对象,则返回第一个操作数
  • 如果两个操作数都是null,则返回null
  • 如果两个操作数都是NaN,则返回NaN
  • 如果两个操作数都是undefined,则返回undefined、

逻辑或操作符是短路操作符。

console.log(a || 2); //ReferenceError: a is not defined
console.log(2 || a); //2, 因为是短操作符,第一个操作符2为true,第二个操作符不会执行(这里的变量a是未定义的变量)
console.log(2 || 1); //2,第一个操作符2是true,直接返回2,不会管第二个操作数
console.log(0 || 2); //2,第一个操作符0时false,会计算第二个操作数
console.log(2 || 0); //2,第一个操作符2是true,直接返回2,不会管第二个操作数
console.log(2 || 3); //2,第一个操作符2是true,直接返回2,不会管第二个操作数
console.log(NaN || NaN); //NaN
console.log(null || null); //null
console.log(undefined || undefined); //undefined

逻辑与

逻辑与操作符由(&&)表示,有两个操作数

第一个操作数第二个操作数结果
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

逻辑与操作符可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个操作符不是布尔值的情况下,逻辑与操作就不一定返回布尔值。遵循以下规则

  • 如果第一个操作数是对象,则返回第二个操作数
  • 如果第二个操作数时对象,则只有第一个操作数的求值结果为true的情况下才会返回该对象
  • 如果两个操作数都是对象,则返回第二个操作数
  • 如果有一个操作数是null,则返回null
  • 如果有一个操作数是NaN,则返回NaN
  • 如果有一个操作数是undefined,则返回undefined

逻辑与是短路操作符

console.log(a && 0); // ReferenceError: a is not defined
console.log(0 && a); //0, 因为是短操作符,第一个操作符0为false,第二个操作符不会执行(这里的变量a未定义)
console.log(2 && 1); //1,第一个操作数2是true,会计算第二个操作数,返回第二个操作数1
console.log(0 && 2); //0,第一个操作数0是false,直接返回0,不会管第二个操作数
console.log(2 && 0); //0,第一个操作数2是true,会计算第二个操作数
console.log(2 && 3); //3,第一个操作数2是true,会计算第二个操作数,第二个操作数3是true,返回3
console.log(NaN && NaN); //NaN,第一个操作数是NaN,不会管第二个操作数
console.log(null && null); //null,第一个操作数时null,不会管第二个操作数
console.log(undefined && undefined); //undefined,第一个操作数时undefined,不会管第二个操作数
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值