js隐式转换

在平常工作中隐式转换经常遇到,但是到底在转换时候转换成那种数据类型,没有过多研究,趁着5.1在家没事干,总结一波。直接看隐式转换的应用场景。
加减乘除
1 加法运算
1.1 如果加法运算符两边分别是Number,Boolean,null,undefined,则都通过Number()转换成数值类型. undefined转换成number类型时候是NaN(建议死记住)
1.2 如果有一边是字符串,另一边要转换成字符串
1.3 对象类型会手动调valueOf和toString(不做过多解释这两个方法)
2 减法乘法除法
减法乘法除法只能对Number数据类型进行运算,所以都要转换成Number数据类型。
双等运算符
2.1如果x和y的类型一样
2.1.1 若为number类型 x和y数值一样返回true
2.1.2 若为string类型 当x和y为完全相同的字符序列返回true
2.1.3 若为boolean类型 当x和y同为true或者同为false时候返回true
2.1.4 若为null类型 true
2.1.5 若为undefined true
2.2如果x和y类型不一样
2.2.1 若x为null,y为undefined 返回true (建议死记)
2.2.2 若x为字符串,y为数值,字符串就变成数值再进行比较
2.2.3 若有boolean类型,直接把boolean类型转换成数值再进行比较,
2.2.4 若有对象,要把对象转成原始值,再进行比较
注意
NaN== 任何值 都是false
null,undefined不做类型转换
之前遇见过一个面试题
null==“null” 我果断的说了false 说下我当时的理解 null变成了0 "null"变成了 NaN;然后0== NaN肯定是false了,是我蒙对了哈,正确的理解是null不做类型转换,然后"null"压根也没有转换成NaN,就没有类型转换,所以两个不一样的数据类型肯定是false了。大家猜测null== 0?是true还是false哈

比较大小
3.1 如果一边是数值类型,另一边会通过Number()转换成数值类型
3.2 如果两边都是字符串,会依次比较字符对应的unicode编码
3.3 boolean类型转换成数值类型
3.4对象类型会通过获取原始值然后再进行比较
注意
NaN与任何值比较都是false
null和undefined会转换成数值类型
逻辑非 !
先通过Boolean()转换,再取反
以上就是我知道的隐式转换的应用场景,希望可以帮助到你

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值