CSS和JS在網頁中的放置順序是怎樣的?
css使用link標簽放在頂部 <head></head>
中。
- 把css樣式放在底部會出現白屏,fouc等現象。
- 使用@import標簽即使放在link標簽中且放在頭部,也有可能出現白屏。
js放在底部
放前面因為js是按順序加載,腳本會阻塞后面內容的呈現,會阻塞其后組件的下載,也會出現白屏現象。
解釋白屏和FOUC
白屏:瀏覽器在等待頁面組件包括樣式表全部加載完成后才呈現整個頁面。若樣式表放在頁面底部,將會出現白屏?!獦邮奖碓陧撁嬷形恢貌⒉挥绊戫撁嬷薪M件的下載時間,但是會影響頁面的呈現。
fouc:如果把樣式放在底部,對于IE瀏覽器,在某些場景下(點擊鏈接,輸入URL,使用書簽進入等),會出現 FOUC 現象(逐步加載無樣式的內容,等CSS加載后頁面突然展現樣式).對于 Firefox 會一直表現出 FOUC .
async和defer的作用是什么?有什么區別
defer使得browsers延遲腳本的執行,直到文檔的載入和解析完成,并可以操作(在onload事件觸發前)。
async使得browsers可以盡快地執行腳本,而不用在下載腳本時阻塞文檔解析(異步)。在不支持async的browsers中,通過動態創建<script>元素并把它插入文檔中,來實現腳本的異步載入和執行。
若兩個屬性同在,會忽略defer而遵從async
簡述網頁的渲染機制
- 解析html標簽,構建dom樹
- 解析css標簽,構建cssom樹
- 把dom和cssom組合成渲染樹(render tree)
- 在渲染樹的基礎上進行布局,計算每個節點的幾何結構
- 把每個節點繪制到屏幕
JavaScript 定義了幾種數據類型? 哪些是簡單類型?哪些是復雜類型?
JS定義了5種簡單類型:Undefined;Null;Boolean;Number和String
1種復雜類型:Object
NaN、Undefined、Null分別代表什么?
NaN:"not a number"即非數值,用于表示一個本來要返回數值的操作數未返回數值的情況,任何涉及NaN的操作都會返回NaN。
Undefined:代表聲明變量但未對其初始化。
Null:表示一個空對象指針,常用于定義變量用于將來保存對象。
typeof和instanceof的作用和區別?
typeof:一元運算符,用來返回操作數類型的字符串。
instanceof 運算符是用來測試一個對象是否在其原型鏈原型構造函數的屬性。其語法是object instanceof constructor。
代碼1:
代碼2:
代碼3:
代碼4:
var arr = [3,4,5]; for(i=0;i<3;i++){ console.log(arr[i]*arr[i]) };
代碼5:
var obj = {name:'hunger',sex:'mail',age:'28'} for(key in obj){ console.log(obj[key]); };
代碼6: