JavaScript中非布尔值的与(&&)或(||)运算

逻辑运算符&& || 非布尔值的情况:

在对非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,并且返回原值,不是true或false;

  • 与&&:
  • 如果第一个值为true,则必然返回第二个值,无论第二个值的类型是什么;
    如果第一个值为false,则直接返回第一个值,无论第一个值的类型是什么。
var a = 0 && true;
// 先把0转换为布尔值,为false
// 因为&&只要有一个值为false,则返回false,所以输出结果为0
// 不会输出false,是输出原值
console.log(a); 

var b = 1 && 3;
// 输出结果为3 原因和js中短路的与&&一样,如果第一个值是true,则直接返回第二个值,不管第二个值的类型是什么,都会返回
console.log(b); // 3

var c = 1 && NaN;
console.log(b); // NaN

  • 或||:
  • 如果第一个值为true,则直接返回第一个值;
    如果第一个值为false,则必然返回第二个值;
var b = 0 || 1; // 等同于false || true
console.log(b); // 输出结果为1

var b2 = 1 || 0; // 等同于true || false
console.log(b2); // 输出结果为1

var b3 = '3' || 8; // 等同于true || true
console.log(b); // 输出结果为3

猜你喜欢

转载自blog.csdn.net/weixin_43757001/article/details/114370096