問答:
1.CSS和JS在網(wǎng)頁中的放置順序是怎樣的惋啃?
- CSS使用
link
引入樣式,將引入的樣式表放在<head>
標簽內(nèi)育苟,而js放在<body>
標簽的底部位置;
2.解釋白屏和FOUC
- 白屏:
- 1.如果把樣式放在底部,對于IE瀏覽器,在某些場景下(新窗口打開,刷新等)頁面會出現(xiàn)白屏,而不是內(nèi)容逐步展現(xiàn)阀圾。
2.如果使用 @import 標簽,即使 CSS 放入 link, 并且放在頭部,也可能出現(xiàn)白屏反番。
3.對于圖片和CSS澜薄,在加載時會并發(fā)加載(如一個域名下同時加載兩個文件)为肮。但在加載js時,會禁用并發(fā)肤京,并且阻止其他內(nèi)容的加載颊艳,所以把js放入頁面頂部也會導致白屏現(xiàn)象。 - FOUC
- FOUC(flash of Unstyled Content)無樣式內(nèi)容閃爍忘分,如果把樣式放在底部棋枕,對于IE瀏覽器,在某些場景下(點擊鏈接妒峦,輸入URL重斑,使用書簽進入等),會突然出現(xiàn)FOUC現(xiàn)象(逐步加載無樣式的內(nèi)容肯骇,等CSS加載后頁面突然展現(xiàn)樣式)窥浪。對于Firefox會一直出現(xiàn)FOUC祖很。
3.async和defer的作用是什么?有什么區(qū)別
- 沒有 defer 或 async漾脂,瀏覽器會立即加載并執(zhí)行指定的腳本假颇,“立即”指的是在渲染該 script 標簽之下的文檔元素之前,也就是說不等待后續(xù)載入的文檔元素符相,讀到就加載并執(zhí)行拆融。
- async,加載和渲染后續(xù)文檔元素的過程將和 script.js 的加載與執(zhí)行并行進行(異步)啊终。腳本延遲到文檔解析和顯示后執(zhí)行镜豹,有順序。
- defer蓝牲,加載后續(xù)文檔元素的過程將和 script.js 的加載并行進行(異步)趟脂,但 script.js的執(zhí)行要在所有元素解析完成之后,DOMContentLoaded 事件觸發(fā)之前完成例衍。不保證順序昔期。
4.簡述網(wǎng)頁的渲染機制
- 將html代碼生成DOM樹。
- 將css代碼生成相應的CSSOM樹佛玄。
- 當所有的css文件加載完且所有的CSSOM構建結束后硼一,就會和DOM一起生成渲染樹(Render Tree)。
- 瀏覽器會在渲染樹的基礎上進行布局梦抢,將所有的DOM節(jié)點位置計算出來(painting)般贼。
- 最后,將每個節(jié)點的內(nèi)容呈現(xiàn)到屏幕上奥吩。
5.JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是簡單類型?哪些是復雜類型?
- javaScript共有6種數(shù)據(jù)類型
- 簡單的數(shù)據(jù)類型:
Null
Undefined
Boolean
Number
String - 復雜的數(shù)據(jù)類型:
Object
6.NaN哼蛆、undefined、null分別代表什么?
- Nan:not a number霞赫,NaN是一種數(shù)字類型腮介,但是表示不是一個數(shù)字。通常在運算不能正常產(chǎn)生數(shù)字的時候出現(xiàn)端衰。它不等于任何值叠洗,包括它本身。
- undefined:表示變量只被聲明旅东,沒被初始化惕味,有指針,但指針沒指向任何空間玉锌。
- null:表示空指針,不存在的東西疟羹。
7.typeof和instanceof的作用和區(qū)別?
- typeof:運算符可以返回一個值的數(shù)據(jù)類型
- 原始類型返回該類型:number string boolean
- 函數(shù)返回function
- undefined返回undefined
- 其他返回object
- instanceof: 用來判斷變量是否是某個對象的實例,返回true or false主守。
代碼:
1.完成如下代碼判斷一個變量是否是數(shù)字禀倔、字符串、布爾参淫、函數(shù)救湖?
2.以下代碼的輸出結果是?
3.以下代碼的輸出結果是?
4.遍歷數(shù)組,把數(shù)組里的打印數(shù)組每一項的平方
5.遍歷 JSON, 打印里面的值
對于obj對象涎才,可以創(chuàng)建變量key鞋既,然后通過——in——的方式來遍歷obj的屬性,然后通過——obj[key]——的方式來遍歷obj的值耍铜;
6.下面代碼的輸出是? 為什么邑闺?