比较两个相等节点的childNodes返回false,比较它们的innerHTML返回true,为什么?

我正在构build一个比较Node.js中两个DOM的非常基本的函数,我打算不仅要检测差异,还要确定确切的区别。 令人惊讶的是,当我使用两个相等的DOM(使用jsdom重build)时,比较节点的childNodes在使用childNodes时返回false,在使用innerHTML时为true。

const checkForUpdates = function(website) { let oldDom = new JSDOM(website.storedPage.page); oldDom = oldDom.window.document.querySelector('body'); let newDom = new JSDOM(website.newPage.page); newDom = newDom.window.document.querySelector('body'); const startChecking1 = function(someDom, anotherDom) { return someDom.childNodes === anotherDom.childNodes; // This returns false }; const startChecking2 = function(someDom, anotherDom) { return someDom.innerHTML === anotherDom.innerHTML; // This returns true }; console.log(startChecking(oldDom, newDom)); }; 

对于我的目的来说,使用childNodes并不是严格必要的,也许它不适用于这种types的条件语句,但是如果这些DOM完全相同,它仍然会返回true。 即使当我使用'=='而不是'==='时,我会得到错误的。

感谢你的帮助!

调用.innerHTML返回序列化的内容,这是基本的string匹配。

试图比较.childNodes是试图比较对象,这是不是在JavaScript比较直接。

JavaScript中的对象比较