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

JavaScript作用域鏈?
1、 全局函數(shù)無(wú)法查看函數(shù)內(nèi)部細(xì)節(jié),但是局部函數(shù)可以查看上層的函數(shù)細(xì)節(jié)直至全局
2、如果當(dāng)前作用域鏈沒(méi)有找到屬性或方法,會(huì)向上層作用域鏈Scoped查找,直至全局函數(shù),這就是作用域鏈,
?
網(wǎng)絡(luò)請(qǐng)求
XHR封裝
1、創(chuàng)建一個(gè)XMLHttpRequest的對(duì)象
2、通過(guò).open的方法傳入get、post還是其他的請(qǐng)求方式,第二個(gè)參數(shù)傳入的是請(qǐng)求后端的地址,第三個(gè)參數(shù)是不是異步默認(rèn)情況下是true
3、通過(guò)send發(fā)送
4、使用onreadystatechange來(lái)監(jiān)聽(tīng),如果返回回來(lái)的onreadystatechange返回的是4的話就查看status返回的狀態(tài)碼是200-300的話就是請(qǐng)求成功,xhr請(qǐng)求是可以取消的,通過(guò)abort取消
?
Fetch(w3c)
Fetch()是一個(gè)全局方法提供簡(jiǎn)單合理的方式跨網(wǎng)絡(luò)獲取資源,它的請(qǐng)求是基于Promise的。它是專門(mén)為了取代傳統(tǒng)的xhr而生的
?
Jsonp(解決跨域)
動(dòng)態(tài)創(chuàng)建script src指向沒(méi)有跨域限制,onload
后端返回的數(shù)據(jù)格式一定是test(`[“11”,”22”,”333”]`)
前端提前定義號(hào)test這個(gè)方法,通過(guò)形參就拿到數(shù)據(jù)了,jsonp可以做到get請(qǐng)求,無(wú)法做到post請(qǐng)求(缺點(diǎn)),jsonp不可以取消
?
?
跨域和同源策略
所謂的同源策略其實(shí)就是瀏覽器的一種機(jī)制,只允許在同源,也就是同協(xié)議、同域名、同端口的情況下才能進(jìn)行數(shù)據(jù)交互,但是我們?cè)陂_(kāi)發(fā)項(xiàng)目的過(guò)程中項(xiàng)目接口不止一個(gè)域,所以往往就需要做跨域處理,通常的跨域方式有這么幾種:
1、jsonp主要依賴script標(biāo)簽不受同源策略影響,src指向某一個(gè)接口的地址,同步需要傳遞call back回調(diào)函數(shù)名字,這樣當(dāng)接口調(diào)用成功之后本地創(chuàng)建的全局回調(diào)函數(shù)會(huì)執(zhí)行,并接收到數(shù)據(jù),不使用img標(biāo)簽的原因是,因?yàn)閕mg標(biāo)簽無(wú)法執(zhí)行js語(yǔ)句
2、CORS,依賴服務(wù)器對(duì)前端的請(qǐng)求頭信息進(jìn)行放行,不做限制
Access-Contorl-Allow-Origin配置成*
3、代理訪問(wèn),前端訪問(wèn)不存在的跨域問(wèn)題的代理服務(wù)器,代理服務(wù)器再去訪問(wèn)目標(biāo)服務(wù)器(服務(wù)器之間沒(méi)有跨域限制)