撩課大前端-面試寶典-第十一篇

1.請說明ECMAScript, JavaScript, Jscript之間的關係?

ECMAScript提供腳本語言必須遵守的規則、

細節和準則,是腳本語言的規範。

比如:ES5,ES6就是具體的一js版本。

JavaScript是ECMAScript的一個分支版本,

JavaScript 實現了多數 ECMA-262 中

描述的 ECMAScript 規範,但存在少數差異。

JScript是微軟公司對ECMA-262語言規範的

一種實現,除了少數例外(這是為了保持向後兼容 ),

微軟公司宣稱JScript完全實現了ECMA標準.

關係:

JavaScript和JScript都是ECMAScript的版本分支,

二者在語法上沒有多大的區別; 只不過一個是

NetScape公司的, 一個是微軟的; IE系列默認是

JScript, 其它的則反之用JavaScript。

2. 頁面加載過程中可能觸發哪些事件? 它們的順序是?


頁面加載時,大致可以分為以下幾個步驟:
1) 開始解析HTML文檔結構
2) 加載外部樣式表及JavaScript腳本
3) 解析執行JavaScript腳本
4) DOM樹渲染完成
5) 加載未完成的外部資源(如 圖片)
6) 頁面加載成功
執行順序:
1) document readystatechange事件
2) document DOMContentLoaded事件
3) window load事件

3. 函數中在聲明變量a前使用a會產生錯誤嗎? 為什麼?


不會, JS中能夠進行變量作用域提升,
把所有變量、函數的聲明提升到當前
作用域的最前面, 但不進行賦值操作;
所以可能造成獲取的值是undefined。

4. 什麼是hash, 以及hashchange事件?


先了解下什麼是hash:
hash即URL中"#"字符後面的部分。

a) 使用瀏覽器訪問網頁時,
如果網頁URL中帶有hash,
頁面就會定位到id(或name)
與hash值一樣的元素的位置;
b) hash還有另一個特點,
它的改變不會導致頁面重新加載;
c) hash值瀏覽器是不會隨請求發送到服務器端的;
d) 通過window.location.hash屬性獲取和設置hash值。
window.location.hash值的變化會直接
反應到瀏覽器地址欄(#後面的部分會發生變化),
同時,瀏覽器地址欄hash值的變化也會觸發
window.location.hash值的變化,
從而觸發onhashchange事件。
再來了解下什麼是hashchange事件:
a) 當URL的片段標識符更改時,
將觸發hashchange事件
(跟在#符號後面的URL部分,包括#符號)
b) hashchange事件觸發時,
事件對象會有hash改變前的URL
(oldURL)和hash改變後的URL
(newURL)兩個屬性。

5. 什麼是CDN, CDN對於網站有什麼意義, 它有什麼樣的缺點?


CDN又稱為內容分發網絡; 本意在於
儘可能避開互聯網上有可能影響數據
傳輸速度和穩定性的瓶頸和環節,
使內容傳輸的更快、更穩定。
主要目的:
解決因分佈、帶寬、服務器性能帶來的訪問延遲問題,
適用於站點加速、點播、直播等場景。
使用戶可就近取得所需內容,解決 Internet網絡擁擠的狀況,
提高用戶訪問網站的響應速度和成功率。
缺點:
a) 實施複雜 , 投資大;
b) 目前大部分的CDN還只是對靜態內容加速,
對動態加速效果不好;
而雙線對動態加速的效果跟靜態是一樣的。


分享到:


相關文章: