隐式转换的逻辑

在我们使用java scrpit时,有时会使用 1=="1"或者类型的判断,这个时候两边都不是一个类型,理论上应该报错,但实际上并不会,浏览器会判定这个为true,这个问题的原因就在于隐式转换。

隐式转换是什么东西,首先我们分析一下这个词,转换是实际操作,隐式是形容这个过程,也就是说,是在我们不知道的内部进行了转换,这么一说就理解了,在1=="1"这个例子中,浏览器自动把两个类型转换成同一个类型然后进行判断,这就是隐式转换,

那么问题来了,隐式转换是如何转换的呢,是从什么类型转换到什么类型?

1、1=="1",把"1"转换成数字型1然后进行比较,故判定结果为true;

2、1=="一",把“一”转换成数字型,即为NaN,NaN是一个不可知不确实的数字,故判定结果为false;

对于运算符来说,浏览器会自动把类型转换成数字型,也就是Number型;

对象转换成字符串,字符串转换成数组,布尔值直接转换成数值,数组与对象一样。

第二种转换是+,这是拼接符,不是运算符,用于1+“1”,这个例子中会把数字型1转换成字符串“1”然后与别一个字符串拼接进来;

对象/数组转换成字符串,布尔值转换成数字型再转换成字符串。

第三种是逻辑运算符非,也就是!

转换顺序是对象/数组转换字符,字符转换数字,数字转换布尔值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值