什么是doctype及做用
必须按规范来讲css
浏览器渲染过程
dom + cssom -> reder tree -> layout前端
定义:DOM结构中的各个元素都有本身的盒子(模型),这些都须要浏览器根据各类样式来计算并根据计算结果将元素放到它该出现的位置,这个位置称之为reflow。
触发:
当你增长、删除、修改DOM结点时,会致使reflow或repaint.
当你移动DOM的位置,或搞个动画的时候
修改CSS样式的时候
当调整窗口大小,或者滚动的时候有可能会触发。跨域
定义:
当各类盒子的位置、大小以及其余属性,例如颜色、字体大小都肯定下来后,浏览器因而把这些元素都按照各自的特性绘制一遍,因而页面的内容出现了。只要页面显示的发生了变化都是repaint。
触发repaint:
DOM改动
CSS改动
避免发生repaint:
把全部的DOM都添加到document fragment里面。
布局layoutpromise
......有机会还须要继续了解
题目一:浏览器
console.log(1); setTimeout(function(){ console.log(2); },0); console.log(3); //1,3,2 //setTimeout是异步任务,因此不会和console.log同步执行。因此当执行完console.log(2)后再执行setTimeout,0秒后输出3. //最后的打印顺序是什么?这道题须要了解js运行机制
js是单线程:所谓单线程就是同一时间只能作一件事,缓存
任务队列:网络
同步任务和异步任务:
setTimeout、 setInterver是异步任务,而console.log是同步任务。dom
题目二:异步
console.log('A'); while(true){ } console.log('B'); //输出A //由于while会不断循环致使console.log(B)没法执行。
题目三:async
console.log('A'); setTimeout(function(){ console.log(B); },0); while(1){ } //1是true,0是false.
题目四:
for(var i=0;i<4;i++){ setTimeout(function(){ console.log(i); },1000); } //4,4,4,4 //异步队列执行时间 //异步任务的放入时间和执行时间 //和上面几题是两个概念
如何理解js单线程
在一个时间内只能干一件事
什么是任务队列
任务队列有同步任务和异步任务.
什么是Event Loop(事件循环)
何时会开启异步任务:
setTimeout和setInterval
DOM事件:须要用到addEventlistener,当触发某个事件,放入异步任务队列中
ES6中的promise
理解哪些语句加入到异步队列
*理解语句放入异步队列的时机
提高页面性能的方法有哪些
<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="dns-prefetch" href="//host_name_to_prefetch.com">
注:当一次打开时,浏览器缓存起不到任何做用,可是使用CDN能够起到做用。
异步加载的方式:
异步加载的区别:
浏览器缓存的分类
强缓存:
协商缓存:
前端错误的分类:
每种错误的捕获方式
即时错误的捕获方式:
资源加载错误:
延伸:跨域的js运行错误能够捕获吗,错误提示什么,应该怎么处理?
上报错误的基本原理