撩課-Web大前端每天5道面試題-Day6
阿新 • • 發佈:2018-12-07
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還只是對靜態內容加速,
對動態加速效果不好;
而雙線對動態加速的效果跟靜態是一樣的。