2017-09-19 100 views
1

我正在构建一个非常基本的函数,它比较Node.js中的两个DOM,并且我打算不仅检测差异,还要识别确切的区别。令人惊讶的是,当我使用两个相等的DOM(使用jsdom重建)时,比较节点的childNodes在使用childNodes时返回false,而在使用innerHTML时返回true。比较两个相等节点的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一模一样。即使我使用'=='而不是'===',我也会变得错误。

感谢您的帮助!

+1

相同原因'[1,2]!== [1,2]''但[1,2]的ToString()=== [1,2]的ToString()'。 –

回答

相关问题