# Diff算法
`Diff`算法的核心就是**針對(duì)具有相同父節(jié)點(diǎn)的同層新舊子節(jié)點(diǎn)進(jìn)行比較,而不是使用逐層搜索遞歸遍歷的方式。時(shí)間復(fù)雜度為`O(n)`**。
如何理解?
說(shuō)白點(diǎn),就是**當(dāng)新舊`VNode`樹(shù)在同一層具有相同的`VNode`節(jié)點(diǎn)時(shí),才會(huì)繼續(xù)對(duì)其子節(jié)點(diǎn)進(jìn)行比較**。一旦舊`VNode`樹(shù)同層中的節(jié)點(diǎn)在新`VNode`樹(shù)中不存在或者是多余的,都會(huì)在新的真實(shí)`DOM`中進(jìn)行添加或者刪除。
下面就拿一副圖進(jìn)行解釋。

從上面的示例圖可以看到,`Diff`算法中只會(huì)對(duì)同一層的元素進(jìn)行比較,并且必須擁有相同節(jié)點(diǎn)元素,才會(huì)對(duì)其子節(jié)點(diǎn)進(jìn)行比較,其他多余的同層節(jié)點(diǎn)都會(huì)一律做刪除或添加操作。
浙公網(wǎng)安備 33010602011771號(hào)