CSS和JS在網(wǎng)頁中的放置順序
- css放在文檔元素的前面包含在
<head>
中数冬,js放在文檔元素的后面在<body>
里且在尾部。
白屏和FOUC的產(chǎn)生
- 白屏和FOUC都是由于把css樣式的放置在文檔元素的后面造成的;
- 白屏:如果瀏覽器的工作模式是把所有的html內(nèi)容和css樣式都加載之后才進行呈現(xiàn)渲染的話永丝;那么根據(jù)放置的順序劝评,首先它先加載html元素,完成之后屈嗤,再開始加載css樣式;在打開頁面到css加載完成之前的這段時間吊输,瀏覽器是不會呈現(xiàn)內(nèi)容的饶号,這就是白屏現(xiàn)象;
- FOUC:如果瀏覽器的工作模式是加載一個html元素就呈現(xiàn)一個季蚂,加載一個樣式就渲染一個樣式的話茫船;那么根據(jù)放置的順序,它先加載html元素扭屁,并且立刻就呈現(xiàn)出來算谈,注意此時html元素是沒有樣式的,等html加載完開始加載css樣式時料滥,元素才會一個個突然呈現(xiàn)出樣式然眼;在打開頁面看到元素到完成這一元素的css樣式加載的這位段時間,從沒有樣式到突然呈現(xiàn)葵腹,這就是FOUC高每,無樣式內(nèi)容閃爍。
async礁蔗、defer的作用與區(qū)別
-
async
和defer
的作用是讓瀏覽器在遇到j(luò)s的時候不要停止對html文檔的解析觉义。 - 區(qū)別在于,
async異步
會在js下載完成后停止html文檔解析浴井,轉(zhuǎn)而開始執(zhí)行下載的js晒骇,執(zhí)行之后再進行html文檔解析;而defer推遲
指的是在下載完成后不會立刻執(zhí)行磺浙,會等到html文檔全部解析完成后才開始執(zhí)行洪囤。
網(wǎng)頁的渲染機制
- ①根據(jù)用戶的訪問請求去獲得網(wǎng)站的資源,html文檔撕氧、css樣式瘤缩、js文檔等;
②將html文檔進行解析排布伦泥,得到樹狀結(jié)構(gòu)的html鏈剥啤,就是DOM樹;
③將css文檔進行解析排布不脯,得到樹狀結(jié)構(gòu)的ccs鏈府怯,就是CSSOM樹;
④將DOM樹和CSSOM樹結(jié)合生成Render渲染樹防楷;
⑤進行l(wèi)ayout布局牺丙,確定各個節(jié)點位置;
⑥按layout進行繪制复局,顯示頁面冲簿。
JavaScript 中的數(shù)據(jù)類型
- Javascript 定義了6種數(shù)據(jù)類型:
①數(shù)值(number)粟判,如整數(shù)1、2峦剔、3和小數(shù)2.5等档礁;
②布爾型(boolean),就真(true)和假(false)兩個值羊异;
③字符串(string)事秀,一串文本可以是字母也可以是數(shù)字,也可以是字母+數(shù)字野舶;如"345"易迹、"hi"、"abc123"等平道;
④null睹欲,表示目前是個空值;
⑤undefined一屋,表示不存在窘疮,目前沒有值;
⑦對象(object)冀墨,其他各種值組成的一個集合闸衫; - 上述的數(shù)值、布爾型诽嘉、字符串三種是簡單類型蔚出,對象是其他值組成的集合是復(fù)雜類型,null和undefined是兩個特殊的值虫腋。
NaN骄酗、undefined、null是什么
- NaN 是 Not a Number即不是一個數(shù)的意思悦冀,代表將要操作的對象不是一個數(shù)趋翻;
- undefined是不存在的意思目前沒有值,定義后未賦值就會提示undefined盒蟆;注意區(qū)分 not defined 是未定義踏烙!
- null表示目前是個空值;
typeof 和 instanceof 的作用和區(qū)別
- typeof 是用來確定一個值是什么類型的历等,例如
typeof 123
宙帝,就會返回number
,它的返回值包括三種簡單類型、函數(shù)募闲、undefined和對象; - instanceof是用來確定一個對象是否是某個構(gòu)造函數(shù)的實例愿待,可以用來判斷值的類型浩螺,例如
[1,2,3] instanceof Array
,它會返回true
說明[1,2,3]
是屬于數(shù)組的一個實例靴患,它的左邊放置對象,右邊放置構(gòu)造函數(shù)要出; - 區(qū)別在于typeof右邊放置某個值鸳君,它會告訴你這個值是屬于什么類型的;而instance是用來確定對象是否是某個構(gòu)造函數(shù)的示例患蹂,依據(jù)這個特性可以用它來判斷值屬不屬于某個類型或颊,它的左邊只能是對象不能直接簡單類型的數(shù)值。