1、CSS和JS在網(wǎng)頁(yè)中的放置順序是怎樣的?
CSS多是以link的方式寫在HEAD的部分的,否則可能會(huì)出現(xiàn)白屏或者FOUC(Flash of unstyled content)。
JS在網(wǎng)頁(yè)中放在BODY底部,因?yàn)镴S加載的時(shí)候是禁用并發(fā)加載的,這很影響頁(yè)面的加載速度,所以放在最后。
2、解釋白屏和FOUC
·白屏1:如果CSS放在body的最后的話,因?yàn)镠TML加載順序是從上往下,這會(huì)導(dǎo)致CSS的加載被推遲,由于CSS樣式并沒有到,在解析完成之前瀏覽器不能完成渲染,所以會(huì)產(chǎn)生白屏現(xiàn)象。
·白屏2:如果把JS放在頁(yè)面head部分、上面,因?yàn)镴S加載的時(shí)候會(huì)禁用并發(fā)加載,在JS沒有加載完成之前JS下面的HTML不會(huì)解析,所以也會(huì)產(chǎn)生白屏。
·以上情況在IE瀏覽器中會(huì)產(chǎn)生FOUC(flash of unstyled content)。
3、async和defer的作用是什么?有什么區(qū)別
①async:瀏覽器默認(rèn)情況下JS是立即加載執(zhí)行的,但是如果在script標(biāo)簽里面加入了async就可以讓JS和其他并行執(zhí)行,但是不保證先后順序。
②defer:在script標(biāo)簽加入defer,就是JS先加載進(jìn)來(lái),但是執(zhí)行要等到所有元素解析完成之后。
4、簡(jiǎn)述網(wǎng)頁(yè)的渲染機(jī)制
①瀏覽器解析HTML來(lái),創(chuàng)建一個(gè)DOM樹
②瀏覽器解析CSS,得出一個(gè)樣式數(shù)據(jù),繪制一個(gè)CSSOM數(shù)。解析CSS時(shí)候有一個(gè)先后優(yōu)先級(jí):瀏覽器默認(rèn)設(shè)置,用戶設(shè)置,外鏈樣式,內(nèi)聯(lián)樣式,html中的style。
③繪制DOM樹,渲染樹(rendering tree)
④以上完成,瀏覽器就開始在屏幕上顯示出來(lái)。
5、JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是簡(jiǎn)單類型?哪些是復(fù)雜類型?
六種
·簡(jiǎn)單類型:number、String、Boolean
·復(fù)雜類型:object
·兩個(gè)特殊的:undefined、null
其中object可以分為:狹義的對(duì)象(object)、數(shù)組(array)、函數(shù)(function)
6、NaN、undefined、null分別代表什么?
NaN表示某一個(gè)是數(shù)字類型,但是不是具體的數(shù)字。
undefined表示變量未定義或不存在。
null表示變量雖然存在,但是值是空的。
7、typeof和instanceof的作用和區(qū)別?
typeof是用來(lái)顯示數(shù)據(jù)類型的字符串,什么類型的對(duì)象就會(huì)返回什么樣子的object。


instanceof返回的值是布爾型boolean,用于判斷一個(gè)對(duì)象是不是某一個(gè)類型的實(shí)例。
