有人能告诉我这个判断为什么是true吗?

发布于 2022-09-02 20:42:30 字数 180 浏览 12 评论 0

clipboard.png
有人能告诉我为什么是true吗?两个是一样的,判断不等于的时候结果却是true

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

溺渁∝ 2022-09-09 20:42:30

你这就是2个对象实例 本来就不相等

不念旧人 2022-09-09 20:42:30

via https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Equality_()

If both operands are objects, then JavaScript compares internal references which are equal when operands refer to the same object in memory.

把回忆走一遍 2022-09-09 20:42:30

你需要补充的其实是javascript的基本知识,来,看下面:

图片描述

注意我选中的部分哦!!!

文档地址:comparsion-operators

多孤肩上扛 2022-09-09 20:42:30
  1. 对象是引用类型, 两个对象的字段相同并不表示两个对象相同,因为引用地址是不同的。 如果引用的是同一个地址那么结果会为 false

  2. 如果要比较两个对象是否相似(字段值相同),可以利用一些工具函数 lodash 的 isEqual

源来凯始玺欢你 2022-09-09 20:42:30

javascript有五种简单数据类型——UndefinedNullBooleanNumberString,以及一种复杂数据类型Object
简单数据类型中Null表示一个空的指针,其余四种均表示一个具体的值。
而对于Object类型,它又被称为引用类型,Js中所有的对象均是某个特定引用类型的实例。
Js当初可能是有效率方面的考虑吧,所有的对象其实都是指针(引用)。纵然对象内部解构一模一样,但是只要实例不同,指针指向的内存地址当然是不一样的。

==符号的运算法则对于对象而言,它是不会去检查对象内部的,只会检查引用的内存地址是不是同一个,到你这里,你这两个数组明显不是同一个实例,用!=判断当然会得到true

那请放手 2022-09-09 20:42:30

你这个问题其实是可以简化为如下代码;

var a=[1];
var b=[1];
a==b //false

数组之间是不能直接做比较的;当然如果想比较;也是有办法的;

var a=[1];
var b=[1];
a.sort().toString()==b.sort().toString(); // true

另外;小伙子;我看你骨骼惊奇;必是coding奇才;将来维护程序猿界的正义与和平的重任就交给你了;我这有篇《javascript中的那些让人摸不着头脑的不=》;原价13块8;现在免费送给你了;传送门:http://baijunyao.com/article/58

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文