千鋒教育web前端高頻面試題視頻教程,kerwin大話前端面試秘籍(附答案)

一.js有哪些內(nèi)置對象
1.數(shù)據(jù)封裝類對象:Object Array Boolean Number String
2.其他對象:Function Arguments Math Date RegExp Error
3.Es6新增對象: Symbol Map Set Promise Proxy Reflect
二.如何最小化重繪(repaint)和回流(reflow)
需要要對元素進行復(fù)雜的操作時,可以先隱藏(display:“none"),操作完成后再顯示需要創(chuàng)建多個DOM節(jié)點時,使用DocumentFragment創(chuàng)建完后一次性的加入document·緩存Layout屬性值,如: var left = elem.offsetLeft; 這樣,多次使用 left 只產(chǎn)生一次回流。盡量避免用table布局 (table元素一旦觸發(fā)回流就會導(dǎo)致table里所有的其它元素回流)
三.Javascript作用鏈域?
全局函數(shù)無法查看局部函數(shù)的內(nèi)部細(xì)節(jié),但局部函數(shù)可以查看其上層的函數(shù)細(xì)節(jié),直至全局細(xì)節(jié)如果當(dāng)前作用域沒有找到屬性或方法,會向上層作用域[[Scoped]查找,直至全局函數(shù),這種形式就是作用域鏈
四.數(shù)據(jù)請求
1.xhr
yar xhr = new XMLHttpRequest();
xhr.open('get","ww.aaaa.com",true);//異步
xhr send();
xhr.onreadystatechange = function(){
// readstate 4
// status 200-300
// 200 成功 (有可能強緩存策略,cache-contro],expired)
// 301 302 redirect
// 304 從緩存讀取數(shù)據(jù)。(協(xié)商緩存策略,etag)
// 404 not found
// 500 服務(wù)器錯誤。
}
xhr 可以取消?
xhr.abort();//終止請求
2.fetch(w3c)
fetch("url"
(method:"post" ,body:"",credencial:'include")then(res>res.json()).then(res=>{console.log(res)})
// 容性問題
// 發(fā)出的請求,默認(rèn)是不帶cookie.credencial:" include"
3.jsonp(解決跨域)
動態(tài)創(chuàng)建script src指向沒有跨城限制,onload
后端返回的數(shù)據(jù)格式 一定是, test('["111","222","3333”]');
前端提前定義好 test這個方法,通過形參就拿到數(shù)據(jù)了。
jsonp 可以做get請求, 無法做post請求(缺點);
jsonp可以取消嗎? 不能
五.跨域和同源策略
所謂的同源策略其實是瀏覽器的一種機制,只允許在同源,也就是同協(xié)議、同域名、同端口的的情況下才能進行數(shù)據(jù)交互。但是我們在開發(fā)項目的過程中,往往一個項目的接口不止一個域,所以往往就需要做跨域的處理,通常的跨域方式有這么幾種:
SONP,主要依賴的是script標(biāo)簽不受同源策略影響,src指向某一個接口的地址,同步需要傳遞callback回調(diào)函數(shù)本地創(chuàng)建的全局回調(diào)函數(shù)就會執(zhí)行,并且接收到數(shù)據(jù)。不使用img標(biāo)簽的原因是名字,這樣當(dāng)接口調(diào)用成功后因為img標(biāo)簽無法執(zhí)行js語句
CORS,依賴服務(wù)端對前端的請求頭信息進行放行,不做限制。
Access-Contro1-A11ow-Origin配置成
代理訪問,前端訪問不存在跨域問題的代理服務(wù)器,代理服務(wù)器再去訪問目標(biāo)服務(wù)器(服務(wù)器之間沒有跨域限制)