Node.jsの2つのDOMを比較する非常に基本的な機能を構築しています。違いを検出するだけでなく、正確な違いを特定するつもりです。驚くべきことに、2つの同等のDOM(jsdomを使用して再構築)を使用すると、ノードのchildNodesを比較するとchildNodesを使用するとfalseが返され、innerHTMLを使用するとtrueが返されます。私の目的のために2つの等しいノードを比較すると、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,2]!== [1,2]' 'が、[1,2] .toString()=== [1,2] .toString()'。 –