js中== 和 != 的转换规则

== 和 != 基本转换规则

1.如果有一个操作数是布尔型,在比较相等性之前先转换数值 false–0 true–1
2.如果有一个操作数是字符串,另一个为数值,在比较相等性之前先将字符串转换数值 不为数值NaN
3.如果有一个数为对象,另一个不是,则先调用对象的valueOf()方法,得到基本数据类型值按照之前规则比较

这两个操作符在进行比较时要遵循以下规则

1.null == undefined
2.比较相等性之前不能将null 和 undefined 转换成其他任何值
3.NaN 不等于任何值 NaN不等于NaN
4.如果两个数都是对象 则比较是不是指向同一个对象

        console.log([] == []);//false
        console.log([] == ![]);//true
        console.log([] === ![]);//false
        
        console.log({} == {});//false
        console.log({} == !{});//false
        console.log({} === !{});//false
        
        console.log(null == undefined);//true

如果复杂数据类型和简单数据类型进行运算, 先调用复杂数据类型的valueof方法, 如果调用了valueof方还无法进行运算,
那么就调用复杂数据类型的toString方法

这里用数组和对象举例

        console.log([] == ![]); // true
        // ![]  ==  false
        console.log([].valueOf());// []
        console.log([].toString());// 空 ''
        console.log(typeof [].toString()); //string

        // '' == false
        // 0 == 0
        // true
        console.log({} == !{}); // false
        //!{} == false
        console.log({}.valueOf());//{}
        console.log({}.toString());//"[object Object]"

        // "[object Object]" == false
        // NaN == 0
        // false
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值