1. 程式人生 > >撩課-Web大前端每天5道面試題-Day6

撩課-Web大前端每天5道面試題-Day6

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還只是對靜態內容加速,
對動態加速效果不好;
而雙線對動態加速的效果跟靜態是一樣的。