相对等于绝对等于?(==相对等于和===绝对等于),比较结果是布尔值?

重点


    //在严格比较下 null不等于undefined 是成立
    console.log(null !== undefined) // true

    //相对比较 [] == false 
    console.log([] != false) // false
复制代码

==(两个等号的情况)

 == 相对比较等于 如果比较的两个值不同一个类型 就进行数据转换 再进行比较
复制代码
    Number()
    1.字符串和数字比较 将字符串转换为数字 再进行比较
    console.log('2' == 2)
    console.log('3' == 2)
    console.log('3px' == 3) // Number('3px') == 3

    2.boolean和数字 true 1 false 0 将boolean转换为数字 再进行比较
    console.log(true == 1)
    console.log(false == 0)

    console.log([] == 1)
    console.log([] == 0)
    跟数字比较 先把其他类型转换成数字再进行比较 (Number())NaN
    
    boolean和其他值比较 转换成数字
    console.log(true == '') // false 1 == 0

    console.log(true == 'true') // false  1 == NaN
    console.log(false == 'false') // false 0 == NaN

    console.log(true == []) // false Number([]) 0
    console.log(false == []) // true
    
    相对比较时 null undefined 和其他值都不相等
    console.log(null == undefined) // true
    console.log(null == 1) // false
    console.log(undefined == 1) // false
    工作中和null undefined 比较时用 ==
    其余都是=== 严格比较
复制代码
    3.其他类型(除了数字 boolean)和字符串比较 
    将其他类型转换成字符串 再进行比较
    console.log('abc' == 'abcd') // 比较里面字符内容
    
     // 将数组转换成字符串 toString()
    console.log([].toString()) // ""
    console.log(({id: 1}).toString()) // "[object Object]"
    console.log(true.toString()) // "true"
    // /\d+/ 

    console.log([] == '') // true [].toString() == ''
    var obj = {} // "[object Object]"
    console.log({} == '') // false "[object Object]" == ''

复制代码
    4.对象类型和对象类型
    var obj1 = {} // 浏览器为obj1分配了一块内存
    var obj2 = {} // 浏览器为obj2分配了一块内存
    console.log(obj1 == obj2) //false 比较是引用地址
    console.log({} == {}) // false 比较是引用地址

    console.log([] == []) // false
    
    var obj1 = {} // obj1的指针 指向了这个内存空间
    var obj2 = obj1 // obj2的指针 此时也指向了这个地址
    console.log(obj1 == obj2) // true
    
    它俩的指针分别指向 两块内存
    var obj3 = {} // 内存1
    var obj4 = {} // 内存2
复制代码

=== 绝对等于(严格比较) 不会进行数据类型转换

  • 1.先看数据类型 如果数据类型不相等 就直接返回false
  • 2.如果数据类型相等 就比较具体值
  console.log(true === 1)//(布尔和数字绝对比较)false
  console.log({} === {})//(对象和对象绝对比较)比较引用地址,结果是false
  
  console.log(NaN === NaN)//(NaN和任何值比较都是false,包括自己)false
  
  特殊 null undefined
  相对比较时 == (null和undefined才相等)
  null == undefined // true

  绝对比较(三个等号) ===
  null === undefined // false

  // if
  // == ===
  // boolean
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值