问题描述:
在最后一个`return`中,首先排除了自身`el === b`,又继而判断`el != b`,不理解为什么要这样做,难道会出现`el == b`的情况吗?
var contains = (function () {
var docEl = document.documentElement;
if (typeof docEl.compareDocumentPosition != 'undefind') {
return function (el, b) {
}
} else if (typeof docEl.contains != 'undefind') {
return function (el, b) {
return el !== b && el.contains(b);
}
}
return function (el, b) {
if (el === b) return false;
while (el != b && (b = b.parentNode) != null); // 疑惑在这里
return el === b;
}
})()
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…