逻辑and运算

在使用逻辑and运算时,会发生一些奇妙的现象,我们来看看吧。
**

1.介绍

**
五种非布尔值情况:

1.如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
2.如果两个运算数都是对象,返回第二个对象。
3.如果某个运算数是 null,返回 null4.如果某个运算数是 NaN,返回 NaN5.如果某个运算数是 undefined,发生错误。

2.一个运算符是对象,另一个是Boolean值

如果顺序不同,会发生不同的结果。
对象在前,Boolean在后:

let a=new String('hello world')
let result=a&&true;
console.log(result)	//true

Boolean在前,对象在后:

let a=new String('hello world')
let result=true&&a;
console.log(result)		//[String: 'hello world']

原因在于,
第一种情况,计算机先找到的是a,发现非空字符串,继续执行后面发现是true,最后返回后面对象(Boolean)的值为true。

第二种情况:计算机先找到的是true,发现为真,继续执行后面发现是a,最后返回后面对象(String)的值为[String: ‘hello world’]。
**

3.如果两个运算数都是对象,返回第二个对象

**
这个与标题2的情况大致一样,只上代码简单演示下:

let a=new String('hello world')
let b=new Number(5)
let result=a&&b;
let result1=b&&a;
console.log(result)	//[Number: 5]
console.log(result1);	//[String: 'hello world']

**

4.如果某个运算数是 null,返回 null

**

let a=new String('hello world')
let c=null;
let result=a&&c;
let result1=c&&a;
console.log(result)	//null
console.log(result1)	//null

**
如果我们把a换成空字符串或者0或者false等,会得出不同结果。

let a=false;
let c=null
let result=a&&c;
let result1=c&&a;
console.log(result)	//false
console.log(result1)	//null

因为javascript和java语言一样,采取了如果第一个数为假,直接不会执行后面的数,直接返回false.

5.如果某个运算数是 NaN,返回 NaN

**

let a=new String('hello world')
let c=NaN;
let result=a&&c;
let result1=c&&a;
console.log(result)	//NaN
console.log(result1)	//NaN

**
这个改了之后呢?

let a=false;
let c=NaN
let result=a&&c;
let result1=c&&a;
console.log(result)	//false
console.log(result1)	//NaN

6.如果某个运算数是 undefined,发生错误

**

let a=new String('hello world')
let result=a&&c;
let result1=c&&a;
console.log(result)	//报错
console.log(result1)	//报错

这个呢?

let a=false;
let result=a&&c;
let result1=c&&a;
console.log(result)	//false
console.log(result1)	//报错

这是我在开发中遇到的一点比较有意思的情况,后续如果还有其他的也会继续分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不止三岁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值