javascript 中的布尔运算符 && 和 || 的返回值 --- 小白变色记

javascript 中的布尔运算符 && 和 ||

研究原因:布尔运算符&&和|| 的返回结果不一定是布尔值!


1.首先先介绍下常见的数据类型转化为bool后的值。
(常用地方)在if表达式中,javascript先把条件表达式转化为bool值再进行判断。
数据类型      转化为bool后的值
  null                    false
  undefined          false
  0 |(数字零)      false
  ""(空字符串)    false
  Object               true
  function             true
  ...

2.下面来介绍下逻辑与 &&  逻辑或 ||  的运算后的返回结果
逻辑与 &&

栗子:
var a = true, b = 123, c = null;
console.log(a && b);  // 123
console.log(a && c);  // null

var a1 = null, b1 = 123, c1 = true;
console.log(a1 && b1);  //null
console.log(a1 && c1);  //null

var a2 = false, b2 = 123, c2 = null;
console.log(a2 && b2);   //false
console.log(a2 && c2);   //false

由上面的结果可以看出,在逻辑与&&中,当左侧表达式为 真值,结果则为右侧表达式;当左侧表达式为 假值,结果则返回左侧表达式。
也就是

var i = "真值" && "任意值";   =>  i 结果为任意值
var i = "假值" && "任意值";   =>  i 结果为左侧假值  // 假值包括 null false 0 undefined 空字符串

 

逻辑或 ||

栗子:
var a1 = true, b1 = 123, c1 = null;
console.log (a1 && b1);   // 123
console.log(a1 && c1);    // null

console.log(a1 || b1)    // true
console.log(a1 || c1)    // true

var a2 = "shiping", b2 = 123, c2 = null;
console.log(a2 || b2);    // "shiping"
console.log(a2 || c2);    // "shiping"

var a3 = false, b3 = 123, c3 = null;
console.log(a3 || b3);    // 123
console.log(a3 || c3);    // null

var a4 = null, b4 = 123, c4 = null;
console.log(a4 || b4);    // 123
console.log(a4 || c4);    // null

由上面结果可以看出,逻辑或||中,但左侧表达式为 真值, 结果则返回左侧表达式;当左侧表达式为 假值,结果则返回右侧表达式。
var i = "真值" || "任意值"; =>i 结果为"真值"
var i = "假值" || "任意值"; =>i 结果为"任意值"
 

 

3.逻辑&&和|| 都属于短路操作
什么叫短路操作?即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。

var found = true;
var result = (found && someUndefinedVariable);  //  这里会发生错误
  alert(result);  //  这里不会执行


在上面的代码中,当执行逻辑与操作时会发生错误,因为变量soneUndefinedVariable没有声明,由于found为true,所以逻辑与会对变量
someUndefinedVariable求值,由于someUndefinedVariable没定义,所以会报错,如果found为false的话,则不会对someUndefinedVariable
进行求值,就有输出结果。(ps 不能在逻辑与中使用未定义的值)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值