【发布时间】:2016-04-22 02:19:28
【问题描述】:
有人问过关于对象深度比较的问题,我有解决方案。但是解决方案中有一行我不完全理解。
这是solution,这是Ch 4 of Eloquent JS中比较对象的问题。我得到了所有的东西,除了这条线:
if (!(prop in a) || !deepEqual(a[prop], b[prop]))
它位于底部。这是完整的功能:
function deepEqual(a, b) {
if (a === b) return true;
if (a == null || typeof a != "object" ||
b == null || typeof b != "object")
return false;
var propsInA = 0, propsInB = 0;
for (var prop in a)
propsInA += 1;
for (var prop in b) {
propsInB += 1;
if (!(prop in a) || !deepEqual(a[prop], b[prop]))
return false;
}
return propsInA == propsInB;
}
if (!(prop in a) 是在比较该索引处“b”中属性的存在,还是比较值?
真的是一样的q。关于下半年,但我知道这是一个不同的答案:!deepEqual(a[prop], b[prop]) 进行什么类型的比较(例如,对或错)?我理解递归,但与我之前的问题一样,这是进行“它存在”比较,还是比较值中的信息?
提前谢谢你。
【问题讨论】:
标签: javascript