javascript中的==与===

首先,== equality 等同,=== identity 恒等。==, 两边值类型不同的时候,要先进行类型转换,再比较。===,不做类型转换,类型不同的一定不等。

==操作符:

  • 如果两个值具有相同类型,会进行===比较,返回===的比较值。(都是Object也走这条路)
  • 如果两个值不具有相同类型,也有可能返回true
    • 如果一个值是null另一个值是undefined,返回true
    • 如果一个值是string另个是number,会把string转换成number再进行比较
    • 如果一个值是true,会把它转成1再比较,false会转成0
    • 如果一个值是Object,另一个是number或者string,会把Object利用 Symbol.toPrimitive(),valueOf()或者toString()转换成原始类型再进行比较,优先级Symbol.toPrimitive() > valueOf() > toString()

===操作符:

  1. 如果两个参数的类型不相等,返回false
  2. 如果两个参数的类型为null或undefined,返回true
  3. 如果两个参数的类型为数字,那么:
    1. 如果有一个操作符的值为NaN,那么返回false
    2. 如果不为NaN,且两数值相等,那么返回true
    3. 在比较数值时不区分+0和-0,即-0===+0+0===-0
    4. 如果两个参数的类型为字符串,那么比较两个字符串的值是否相等
    5. 如果两个参数的类型为对象,那么判断这两个参数是否为同一个对象(指向同一引用)
    6. 如果两个参数的类型为符号(Symbol),那么判断这两个参数是否为同一个符号。

更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值