我是靠谱客的博主 害羞小蝴蝶,最近开发中收集的这篇文章主要介绍[]==[]和[]==![],觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先放结论:

[]==[]
//false
[]==![]
//true

[]==[]:
在js中比较对象比较采用的是引用的比较,在[]==[]中,用字面量创建了两个数组对象,比较两端对象类型一致后,再用===进行比较,比较两个数组对象的引用的结果自然是false。

[]==![]:
比较前得先知道js的隐式转换规则:

  • 如果有一端为布尔值,则在比较相等之前先将其转换(false为0,而true为1);
  • 如果一端是字符串,另一端是数值,在比较相等性之前先将字符串转换为数值
  • 如果一端是对象,另一端不是,则将对象转换为基本类型值,再进行上两条的判断。
  • 特别的null和undefined不能转换成任何值,在取反时两个都为true。

*在[]==![]比较中,!的优先级高,先进行![],由于js的隐式转换规则,又因为![]是布尔型,所以![]转换为0。在一端为引用类型,另一端不是时,先将引用类型转换为String类型,再转成Number类型进行比较,所以[]先转换为“”空字符串,在转换为0。相当于0==0,因此是true。

最后

以上就是害羞小蝴蝶为你收集整理的[]==[]和[]==![]的全部内容,希望文章能够帮你解决[]==[]和[]==![]所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部