一、浏览器渲染页面的原理及流程
1.根据html文件构建DOM树和CSSOM树。构建DOM树期间,如果遇到JS,阻塞DOM树及CSSOM树的构建,优先加载JS文件,加载完毕,再继续构建DOM树及CSSOM树。
2.构建渲染树(Render Tree)。
3.页面的重绘(repaint)与重排(reflow,也有称回流)。页面渲染完成后,若JS操作了DOM节点,根据JS对DOM操作动作的大小,浏览器对页面进行重绘或是重排。
二、实现一个clone函数
function clone(data){
let obj;
switch (typeof data){
case "undefined":
break;
case "string":
obj = data+'';
break;
case "number":
obj = data-0;
break;
case "boolean":
obj = data;
break;
case "object":
break;
}
}
三、哪些操作会造成内存泄漏?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没
有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
1.setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。
2.闭包
3.控制台日志
4.循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)