任何人都可以帮助我理解在JavaScript中以两种方式创建的obj1
和obj2
的区别吗?它们在控制台中看起来一样。
var obj1 = { 'name': 'blue', 'shade': 'dark'};
var obj2 = JSON.parse('{"name":"blue","shade":"dark"}');
因为
(obj1 === obj2) is false as
(obj1 == obj2) is false
在javascript控制台中显示为
Object {name: "blue", shade: "dark"}
Object {name: "blue", shade: "dark"}
答案 0 :(得分:3)
虽然对象内容相同,但您引用了两个单独的对象,这就是为什么==和===都失败(它们检查引用而不是内容)。
答案 1 :(得分:1)
正如ABucin所说,javascript检查引用,如果你仍想检查两个jsons是否相等,你可以尝试使用
JSON.stringify(obj1) === JSON.stringify(obj2)
或检查每个键(如果键的顺序不同,则会更复杂但效率更高)。
试试这个:
答案 2 :(得分:0)
您正在使用obj1创建对象,而在obj2中,您将JSON对象解析为对象。由于两个对象都不同(不同的引用),因此它们被视为不同的
您可以通过here
了解详情