4.如果正向解析,例如「div div p em」,我们首先就要检查当前元素到 html 的整条路径, 找到最上层的 div,再往下找,如果遇到不匹配就必须回到最上层那个 div, 往下再去匹配选择器中的第一个 div,回溯若干次才能确定匹配与否,效率很低。 5.逆向匹配则不同,如果当前的 DOM 元素是 div,而不是 selector 最后的 em, 那只要一步就能排除。只有在匹配时,才会不断向上找父节点进行验证。
正向解析,也可以先找到所有的div,如果不匹配,第一步就可以排除掉不匹配的div,这样子也不用回溯啊
我知道了,是因为父节点有多个子节点,而子节点只有一个父节点的原因,
从上往下找必须要遍历真个树才行,而从下往上找,只需要一条线路就 可以,步骤少很多