遇到一段很奇怪的代码,分享一下
const fragment = document.createDocumentFragment();
let child;
while((child = el.firstChild)){ // 1fragment.appendChild(child) // 2
}
return fragment
while里面到底是如何运行的呢?
在第一行的括号里面进行了两次操作:
第一次就是赋值: child = el.firstChild;
第二次就是判断child是否为空,即while(child)
在第二行中,
fragment就把el.firstChild(el.children[0])抽离了出来,这个操作是move dom, el.children[0]被抽出,在下次while循环执行firstChild = el.firstChild时读取的是相对本次循环的el.children[1]以此达到循环转移dom的目的