== 和 === 区别,什么情况 ==

1、结论先行: 

在JavaScript 中,== 相等 和 === 全等 都用于比较两个值是否相等,但它们的比较方式不同。

一言以蔽之:

== 相等,在进行比较的时候,会先转换类型,再比较两个值是否相等;

=== 全等,先判断数据类型,如果不是同一类型直接为 false;若类型相同,再比较值是否相等。

2、== 运算符

== 运算符进行比较时,会先进行类型转换,然后再比较两个值是否相等。

类型转换的规则比较复杂,但可以简单地概括为以下几点:

① 如果两个值类型相同,则直接比较它们的值;

如果一个值是 null,另一个值是 undefined,则它们相等

③ 如果一个值是数字,另一个值是字符串,则将字符串转换为数字后再比较;

如果一个值是布尔值,另一个值是非布尔值,则将布尔值转换为数字后再比较

⑤ 如果一个值是对象,另一个值是数字、字符串或布尔值,则将对象转换为原始值后再比较;

任何其他组合(array数组等),都不相等。

例如:

console.log(1 =="1"); // true,字符串"1"被转换为数字 
console.log(true == 1); // true,布尔值true 被转换为数字 
console.log(null == undefined); // true,它们相等
console.log("5" == [5]); // true,字符串"5”被转换为数字 
console.log({} == {}) ; // false,因为对象被转换为原始值后仍然是对象

3、=== 运算符 

=== 运算符进行比较时,只有当两个值的类型和值都相等时才会返回 true。

=== 表示恒等于,比较的两边要绝对的相同。 具体比较规则如下:

① 如果类型不同,就不相等;

如果两个都是数值,并且是同一个值,那么相等;例外的是,如果其中至少一个是NaN,那么不相等。【判断一个值是否是NaN,只能用 isNaN() 来判断】;

③ 如果两个都是字符串,每个位置的字符都一样,那么相等;否则不相等;

④ 如果两个值都是 true,或者都是 false,那么相等;

⑤ 如果两个值都引用同一个对象或函数,那么相等;否则不相等;

如果两个值都是null,或者都是undefined,那么相等

例如:

console.log(1 === "1"); // false,它们类型不同
console.log(true === 1); // false,它们类型和值不同
console.log(null === undefined); // false,它们类型不同
console.log("5" === [5]); // false,它们类型不同
console.log({} === {}); // false,它们是不同的对象 

一般来说,建议优先使用 === 运算符进行比较。因为它可以避免类型转换的问题,更加严格和安全。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值