什麼是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運行錯誤能夠捕獲嗎,錯誤提示什麼,應該怎麼處理?
上報錯誤的基本原理