基础知识之逻辑与

基础知识之逻辑与(&&)

对于两个操作数都是布尔值的情况,在此不多做说明,以下主要是举例一些特定情况。

第一个操作数是对象,返回第二个操作数
console.log([] && false);   //fasle
console.log([] && '');  //''
console.log({} && true);  //true
第二个操作数是对象,只有第一个操作数【求值为true】才会返回该对象
console.log('' && []);         //''
console.log('hello' && []);    //[]
console.log(true && []);       //[]
console.log(false && []);      //false
console.log(0 && []);          //0
console.log(NaN && []);        //NaN
如果两个操作数都是对象,则返回第二个操作数
console.log([] && {});               //{}
console.log({} && []);                //[]
如果有一个操作数是null/NaN/undefined,则返回null/NaN/undefined,

理解:短路操作的特性

如果有一个操作数是null,则返回null,

console.log('a' && null);         //null
console.log('' && null);          //''

console.log(true && null);        //null
console.log(false && null);        //false

console.log(1 && null);           //null
console.log(0 && null);           //0
console.log(NaN && null);         //NaN

console.log([] && null);          //null
console.log(null && true);        //null
console.log(null && false);       //null

如果有一个操作数是NaN,则返回NaN,

console.log('a' && NaN);         //NaN
console.log('' && NaN);          //''

console.log(true && NaN);        //NaN
console.log(false && NaN);        //false

console.log(1 && NaN);           //NaN
console.log(0 && NaN);           //0
console.log(NaN && NaN);         //NaN

console.log([] && NaN);          //NaN
console.log(NaN && true);        //NaN
console.log(NaN && false);       //NaN

如果有一个操作数是undefined,则返回undefined,

console.log('a' && undefined);         //undefined
console.log('' && undefined);          //''

console.log(true && undefined);        //undefined
console.log(false && undefined);        //false

console.log(1 && undefined);           //undefined
console.log(0 && undefined);           //0
console.log(undefined && undefined);         //undefined

console.log([] && undefined);          //undefined
console.log(undefined && true);        //undefined
console.log(undefined && false);       //undefined
&&操作是一个短路操作,如果第一个操作数决定了结果,永远不会对第二个操作数求值
console.log('' && true);          //''
console.log(0 && true);            //0
console.log(true && '');          //''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值