为什么是[1,[2,3]]!=[1,[2,3]]
Why is [1,[2,3]] != [1,[2,3]]
本文关键字:为什么 更新时间:2024-05-27
可能重复:
如何确定两个JavaScript对象的相等性?
为什么[1,[2,3]] == [1,[2,3]]
的评估结果为false?
此外,为什么会发生这种情况:
var g = { a:1, b:2, c:3 };
g == { a:1, b:2, c:3 }; // false!!
[]
是生成数组文字的快捷方式,而不是调用new Array()
然后填充它。这与{}
类似。在您的示例中,您实际上是通过引用进行比较,而不是通过值进行比较。用new
运算符构造的两个对象指向内存中的不同位置,当你使用==
运算符时,你实际上是在说"这些对象指向内存的同一位置吗?"。要像您期望的那样进行按值比较,您需要遍历正在比较的每个数组/对象的成员,并逐一比较每个值。
因为[]和{}创建了对象的新实例,但它们不相等。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 为什么“;未定义的“;在JavaScript中结束循环
- 为什么这在IE中的工作方式与在Firefox中不同
- 知道为什么我的旋转木马不会自动更改图片吗
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 为什么在变形之前不缺少Fx
- 为什么JavaScript在for循环为3时向所有4发出警报
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- 为什么要使用0>javascript中的0
- 为什么无法在TypeScript中导出类实例
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 为什么忽略了eval()代码中的语法错误
- 为什么在画布上画线;t出现
- 为什么js事件消失了
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- 为什么不'在JQuery中找到第二个css选择器的工作