刷前端面經筆記(六)
1.ES6中的let,const,var的區別是什麼?
var
:宣告全域性常量;
let
:宣告塊級常量,即區域性常量,定以後可以修改;
const
:用於宣告常量,定義後不能再修改值或者引用值的常量,也具有塊級作用域;
2.對陣列進行去重,es5或者es6方法
//es5四種方式: //方式一: Array.prototype.unique1 = function() { // 1. 定義陣列 var temp = []; // 2. 遍歷當前陣列 for(var i = 0; i < this.length; i++) { // 3.如果當前陣列的第i已經儲存進了臨時陣列, // 那麼跳過,否則把當前項push到臨時數組裡面 if (-1 === temp.indexOf(this[i])) { temp.push(this[i]); } } return temp; }; //方式二: Array.prototype.unique2 = function() { //1. hash為hash表,r為臨時陣列 var hash = {}, temp=[]; // 2.遍歷當前陣列 for(var i = 0; i < this.length; i++) { // 3. 如果hash表中沒有當前項 if (!hash[this[i]]) { // 4.存入hash表 hash[this[i]] = true; // 5.把當前陣列的當前項 // push到臨時數組裡面 temp.push(this[i]); } } return temp; }; //方式三: Array.prototype.unique3 = function() { var n = [this[0]]; for(var i = 1; i < this.length; i++){ if (this.indexOf(this[i]) === i) { n.push(this[i]); } } return n; }; //方式四: Array.prototype.unique4 = function() { this.sort(); var re=[this[0]]; for(var i = 1; i < this.length; i++) { if( this[i] !== re[re.length-1]) { re.push(this[i]); } } return re; }; //es6實現方式: Array.prototype.unique = Array.prototype.unique || function () { return [...new Set(this)]; };
3.頁面載入過程中可能觸發哪些事件?它們的順序是?
頁面載入時,大致可以分為以下幾個步驟:
1)開始解析 HTML
文件結構
2)載入外部樣式表及 JavaScript
指令碼
3)解析執行 JavaScript
指令碼
4) DOM
樹渲染完成
5)載入未完成的外部資源(如 圖片)
6)頁面載入成功
執行順序:
1) document readystatechange
事件
2) document DOMContentLoaded
事件
3) window load
事件
4.什麼是CDN,CDN對於網路有什麼意義,它有什麼的缺點?
CDN
又稱為內容分發網路;本意在於儘可能避開網際網路上有可能影響資料傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。
主要目的:解決因分佈、頻寬、伺服器效能帶來的訪問延遲問題,適用於站點的加速、點播、直播等場景。使使用者就近取得所需內容,解決 Internet
網路擁擠的狀況,提高使用者訪問網站的響應速度和成功率。
缺點:1)實施複雜,投資大
2)目前大部分的 CDN
還只是對靜態的內容加速,對動態加速效果不好;而雙線對動態加速的效果跟靜態是一樣的。
5.vue-router中$route和$router的區別?
1) $route
為當前 router
跳轉物件裡面可以獲取 name
、 path
、 query
、 params
等
2) $router
為 VueRouter
例項,想要導航到不同 URL
,則使用 $router.push
方法
返回上一個 history
也是使用 $router.go
方法
6.vue路由傳參query與params兩種方式的區別
query
要用 path
來引入,例如 ths.$router.push({ path:"detail",query:{id:"00"}})
,接收引數為 this.$route.query.id
, params
要用 name
來引入,例如 ths.$router.push({ name:"detail",params:{id:"00"}})
,接收引數為 this.$route.params.id
。以 query
傳輸的引數會在類似於 get
傳參,在瀏覽器位址列中顯示引數。