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

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
    评论
JavaScript中,===和==都是用来比较两个值是否相等的操作符。最大的区别在于它们在进行比较时是否会进行类型转换。 ==操作符是判断相等的意思,它在比较之前会进行类型转换。例如,1 == '1'将返回true,虽然第二个1是字符串类型,但是==不会判断类型,所以返回true。另外,如果1 == '2'则返回false,因为1不等于2。这种类型转换的行为可能会导致一些意外的结果。 ===操作符也是用来判断相等的,但是它更严谨一些,它首先会判断两边的数据类型是否相同,如果数据类型相同,才会继续判断值是否相等。例如,1 === 1将返回true,因为它们都是数字类型,而1 === '1'将返回false,因为前面的1是数字类型,后面的1是字符串类型。使用===可以避免类型转换可能带来的问题。 总结来说,在使用比较操作符时,尽量使用===判断,因为它更加严谨。只有在特定的情况下,需要进行类型转换的时候,才使用==。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [== 和 === 有什么区别?](https://blog.csdn.net/weixin_48494427/article/details/123850462)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [==与===的区别(JS)](https://blog.csdn.net/dream_start_at_2017/article/details/121875660)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值