JavaScirpt中的逻辑&&、||、!

很多时候最基础的反而掌握的不那么全面,只是一知半解。在此做下记录。

逻辑与(&&)
返回两个操作数中,其中一个操作数的值,具体是返回第一个还是第二个,分情况

boolean类型:
true && false;   // false
true && true;    // true
false && true;   // false
false && false;  // false
// 非boolean类型:
2 && 1;          // 1
2 && 5;          // 5
{} && {};        // {}
1 && { b:1};     // {b: 1}
1 && null;       // null
null && 1;       // null
undefined && 1;  // undefined
undefined && {}; // undefined
NaN && 1;        // NaN
NaN && {};       // NaN

逻辑非(||)
返回两个操作数中,其中一个操作数的值,具体是返回第一个还是第二个,分情况

boolean类型:
console.log(true || false);        // true
console.log(true || true);         // true
console.log(false || true);        // true
console.log(false || false);       // false
// 非boolean类型
console.log(2 || 1);               // 2
console.log(2 || 5);              // 2
console.log({} || {});            // {}
console.log(1 || { b: 1 });       // 1
console.log(1 || null);           // 1
console.log(null || 1);           // 1
console.log(undefined || 1);      // 1
console.log(undefined || {});     // {}
console.log(NaN || 1);            // 1
console.log(NaN || {});           // {}

其实,无论是什么类型,原理都是一样的。逻辑运算符操作对象都是遵循从左至右的顺序来判断。

逻辑与操作符,先判断第一个操作数,即转为boolean类型后,是true还是false
false: 则直接返回第一个操作数的值;
true: 则返回第二个操作数的值。

逻辑或操作符,先判断第一个操作数,即转为boolean类型后,是true还是false
false: 返回第二个数的值
true: 返回第一个数的值

注意,不是转为boolean类型的值,而是原本的值;

逻辑非(!)
将操作数转为boolean类型并且取反

!0;     // true, 0转为boolean为false,取反则为true
!1;     // false,1是非零的数字,转为boolean为true,取反则为false
!'';    // true,   空字符串转为boolean是false,取反则为true
!{};    // false, 对象转为boolean,无论是不是空对象,都是true,取反则为false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值