while 语句中的赋值表达式问题 while(child = el.firstChild)

遇到一段很奇怪的代码,分享一下

const fragment = document.createDocumentFragment();
let child;
while((child = el.firstChild)){  // 1
   	fragment.appendChild(child)  // 2
}
return fragment

while里面到底是如何运行的呢?
在第一行的括号里面进行了两次操作:
第一次就是赋值: child = el.firstChild;
第二次就是判断child是否为空,即while(child)

在第二行中,
fragment就把el.firstChildel.children[0])抽离了出来,这个操作是move domel.children[0]被抽出,在下次while循环执行firstChild = el.firstChild时读取的是相对本次循环的el.children[1]以此达到循环转移dom的目的

你可能感兴趣的:(javascript,js)