一、CSS和JS在網(wǎng)頁(yè)中的放置順序是怎樣的?
1.CSS樣式一般放置在head標(biāo)簽之間。
2.JS一般放置在body標(biāo)簽內(nèi)的最后面。
3.瀏覽器是從上到下渲染內(nèi)容的,CSS放在前面打開(kāi)瀏覽器就可以看到一個(gè)樣式完整的頁(yè)面,而不會(huì)因?yàn)榫W(wǎng)速過(guò)慢而看到只是一個(gè)簡(jiǎn)陋的頁(yè)面內(nèi)容。JS放在body內(nèi)容的底部,可以防止其阻塞body內(nèi)標(biāo)簽內(nèi)容的加載。
二、解釋白屏和FOUC
1.白屏:CSS放入文檔的底部,因?yàn)闉g覽器渲染頁(yè)面內(nèi)容都是至上而下的,所以當(dāng)瀏覽器還沒(méi)有渲染到底部的CSS部分時(shí),頁(yè)面打會(huì)出現(xiàn)白屏。
同樣,如果使用@import標(biāo)簽,link引入css并且放在文檔頂部,也有可能出現(xiàn)白屏現(xiàn)象。
2.FOUC:將css樣式放入文檔底部,會(huì)先加載頁(yè)面內(nèi)容,再加載css樣式后,然后網(wǎng)頁(yè)內(nèi)容突然顯示出樣式,因此內(nèi)容會(huì)出現(xiàn)閃爍 , 對(duì)于Firefox會(huì)一直表現(xiàn)出FOUC。
三、async和defer的作用是什么?有什么區(qū)別
1.async和defer是<script>標(biāo)簽的兩個(gè)屬性,用于指定腳本文件的加載方式。正常情況下,瀏覽器從上到下解析HTML文件,當(dāng)解析到<script>標(biāo)簽的時(shí)候會(huì)立即下載并執(zhí)行腳本,只有當(dāng)加載執(zhí)行腳本之后瀏覽器才能繼續(xù)解析<script>標(biāo)簽之后的文檔內(nèi)容,而async和defer屬性就是改變這種加載方式的作用。
2.區(qū)別
- async是HTML5新增的屬性,它的作用是能夠異步的加載和執(zhí)行腳本,不因?yàn)榧虞d腳本而阻塞頁(yè)面的加載。一旦加載到就會(huì)立即執(zhí)行。不影響頁(yè)面的其他操作。
- defer如果給script標(biāo)簽添加了defer屬性,即使js放在head里面,它也會(huì)在HTML頁(yè)面解析完畢之后再執(zhí)行,也就是類似于把這個(gè)js放在了頁(yè)面底部。簡(jiǎn)單來(lái)說(shuō)就是等頁(yè)面的html和css加載完畢之后再加載js。
三、簡(jiǎn)述網(wǎng)頁(yè)的渲染機(jī)制
1.解析HTML標(biāo)簽,構(gòu)建DOM樹(shù)。
2.解析CSS標(biāo)簽,構(gòu)建CSSOM樹(shù)。
3.把DOM和CSSOM組合成渲染樹(shù)(render tree)。
4.在渲染樹(shù)的基礎(chǔ)上進(jìn)行布局,計(jì)算每個(gè)節(jié)點(diǎn)的幾何結(jié)構(gòu)。
5.把每個(gè)節(jié)點(diǎn)繪制到屏幕上(painting)。
四、JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是簡(jiǎn)單類型?哪些是復(fù)雜類型?
1.五種簡(jiǎn)單類型
- Null(值只有一個(gè)“null”,表示空指針,不存在的東西。)
- Undefined(值只有一個(gè)“Undefined”,表示變量只是被聲明,沒(méi)有賦值。)
- Boolean(布爾值有兩個(gè):true和false)
- Number(數(shù)字類型)
- String(字符類型,用“”或者‘’表示)
2.一種復(fù)雜類型
- object(對(duì)象)
六、NaN、undefined、null分別代表什么?
1.NaN屬性是代表非數(shù)字值的特殊值。該屬性用于指示某個(gè)值不是數(shù)字。可以把Number對(duì)象設(shè)置為該值,來(lái)指示其不是數(shù)字值。
2.undefined表示變量只被聲明,而沒(méi)有賦值。
3.null表示這個(gè)東西不存在。
七、typeof和instanceof的作用和區(qū)別?
1.typeof 檢測(cè)一個(gè)變量的數(shù)據(jù)類型。


2.instanceof 主要目的是檢測(cè)引用類型,判斷對(duì)象是數(shù)組(Array),對(duì)象(object),函數(shù)(function)。

3.區(qū)別:typeof和instanceof的目的都是檢測(cè)變量的類型,二者的區(qū)別在于typeof一般檢測(cè)的是基本數(shù)據(jù)類型,instanceof主要檢測(cè)的是引用類型。
八、完成如下代碼判斷一個(gè)變量是否是數(shù)字、字符串、布爾、函數(shù)

九、以下代碼的輸出結(jié)果是?

十、以下代碼的輸出結(jié)果是?


十一、遍歷數(shù)組,把數(shù)組里的打印數(shù)組每一項(xiàng)的平方

十二、遍歷 JSON, 打印里面的值

十三、下面代碼的輸出是? 為什么

