data = {
json: 'is life'
};
anoth = JSON.parse(JSON.stringify(data));
if (data == anoth){
console.log("yes")
}else{
console.log("nah")
}
console.log(data, anoth)
它们显然是平等的,但为什么它在代码中不起作用
答案 0 :(得分:0)
因为您正在将对象引用相互比较。反序列化原始序列化JSON对象时,返回了一个新的不同对象。两者具有相同的内容,但它们是不同的对象实例。如果你比较JSON.stringify()版本,你会得到一个匹配。
data = {
json: 'is life'
};
anoth = JSON.parse(JSON.stringify(data));
if (data == anoth){
alert("Objects are same.")
}else{
alert("Objects are not same.")
}
if (JSON.stringify(data) == JSON.stringify(anoth)){
alert("Content is same")
}else{
alert("Content is not same.")
}
alert(JSON.stringify(data) + "\n" + JSON.stringify(anoth))

答案 1 :(得分:0)
您应该比较两个对象是否相等,但在您的示例中,您只比较引用Object comparison in JavaScript