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

Javascript 比较两个相等的节点';childNodes返回false,比较它们的innerHTML返回true,为什么?,javascript,node.js,if-statement,dom,Javascript,Node.js,If Statement,Dom,我正在构建一个非常基本的函数来比较Node.js中的两个DOM,我不仅要检测差异,还要确定确切的差异。令人惊讶的是,当我使用两个相等的DOM(使用jsdom重建)时,比较节点的childNodes在使用childNodes时返回false,在使用innerHTML时返回true const checkForUpdates = function(website) { let oldDom = new JSDOM(website.storedPage.page); oldDom = old

我正在构建一个非常基本的函数来比较Node.js中的两个DOM,我不仅要检测差异,还要确定确切的差异。令人惊讶的是,当我使用两个相等的DOM(使用jsdom重建)时,比较节点的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并不是绝对必要的,也许它并不适用于这种类型的条件语句,但我仍然感到惊讶的是,如果这些DOM完全相同,它将返回true。即使我使用“==”而不是“==”,我也会得到false


谢谢你的帮助

调用
.innerHTML
返回基本字符串匹配的序列化内容

尝试比较
.childNodes
是尝试比较对象,而在javascript中这不是直接比较


调用
.innerHTML
返回基本字符串匹配的序列化内容

尝试比较
.childNodes
是尝试比较对象,而在javascript中这不是直接比较


同样的原因
[1,2]!==[1,2]
但是
[1,2]。toString()==[1,2]。toString()
。同样的原因
[1,2]!==[1,2]
但是
[1,2]。toString()==[1,2]。toString()