更新時(shí)間:2023-01-28 15:16:51 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1405次
1.談一談你理解的函數(shù)式編程
簡(jiǎn)單說(shuō),“函數(shù)式編程”是一種“編程范式”,也就是如何編寫程序的方法論
它具有以下特性:閉包和高階函數(shù)、惰性計(jì)算、遞歸、函數(shù)是“第一等公民”、只用“表達(dá)式”
2.說(shuō)說(shuō)你對(duì)作用域鏈的理解
作用域鏈的作用是保證執(zhí)行環(huán)境里有權(quán)訪問(wèn)的變量和函數(shù)是有序的,作用域鏈的變量只能向上訪問(wèn),訪問(wèn)到window對(duì)象即會(huì)終止,作用域鏈向下訪問(wèn)是不被允許的
作用域就是變量與函數(shù)的可訪問(wèn)范圍,即作用域控制著變量和函數(shù)的可見(jiàn)性和生命周期
3.什么是JavaScript原型,原型鏈?有什么特點(diǎn)?
每個(gè)對(duì)象都在其內(nèi)部初始化一個(gè)屬性,就是prototype(原型),當(dāng)我們?cè)L問(wèn)一個(gè)對(duì)象的屬性時(shí),如果這個(gè)對(duì)象內(nèi)部不存在這個(gè)屬性,那么它就會(huì)去prototype里找這個(gè)屬性,這個(gè)prototype又會(huì)有自己的prototype,于是就這樣一直找下去,也就是我們平時(shí)所說(shuō)的原型鏈的概念。
關(guān)系:instance.constructor.prototype = instance.__proto__
JavaScript對(duì)象是通過(guò)引用來(lái)傳遞的,我們創(chuàng)建的每個(gè)新對(duì)象實(shí)體中并沒(méi)有一份屬于自己的原型副本。當(dāng)我們修改原型時(shí),與之相關(guān)的對(duì)象也會(huì)繼承這一改變
當(dāng)我們需要一個(gè)屬性時(shí),JavaScript引擎會(huì)先看當(dāng)前對(duì)象中是否有這個(gè)屬性,如果沒(méi)有就會(huì)找他的prototype中是否有這個(gè)屬性,如此遞推下去,直到Object內(nèi)建對(duì)象
4.說(shuō)說(shuō)什么是事件代理?
事件代理,又稱之為事件委托。是JavaScript中綁定事件的常用技巧。顧名思義,“事件代理”就是把原本需要監(jiān)聽的事件委托給父元素,由父元素?fù)?dān)當(dāng)事件監(jiān)聽的職務(wù)。事件代理的原理是DOM元素的事件冒泡。使用事件地理的好處是可以提高性能。
可以大量節(jié)省內(nèi)存占用,減少事件注冊(cè),比如在table上代理所有td的click事件就非常棒
可以實(shí)現(xiàn)新增子對(duì)象時(shí)無(wú)需再次對(duì)其綁定
5.說(shuō)說(shuō)Ajax原理?
Ajax的原理簡(jiǎn)單來(lái)說(shuō)實(shí)在用戶和服務(wù)器之間加了一個(gè)中間層(AJAX引擎),由XMLHttpRequest對(duì)象來(lái)向服務(wù)器發(fā)異步請(qǐng)求,從服務(wù)器獲得數(shù)據(jù),然后用JavaScript來(lái)操作DOM而更新頁(yè)面。使用戶操作與服務(wù)器響應(yīng)異步化。這其中最關(guān)鍵的一步就是從服務(wù)器獲得請(qǐng)求數(shù)據(jù)
Ajax的過(guò)程只涉及JavaScript、XMLHttpRequest和DOM。XMLHttpRequest是Ajax的核心機(jī)制
Ajax的優(yōu)點(diǎn):
Ajax的缺點(diǎn):
Ajax的請(qǐng)求過(guò)程:
// 1、創(chuàng)建連接
var xhr = null;
xhr = new XMLHttpRequest();
// 2、連接服務(wù)器
xhr.open('get', url, true);
// 3、發(fā)送請(qǐng)求
xhr.send(null);
// 4、接受請(qǐng)求
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
success(xhr.responseText);
} else {
// false
fail && fail(xhr.status);
}
}
}
6.說(shuō)說(shuō)如何解決跨域問(wèn)題?
7.異步加載JS的方式有哪些?
// 異步加載地圖
export default function MapLoader() {
return new Promise((resolve, reject) => {
if (window.AMap) {
resolve(window.AMap);
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = ture;
script.src = '';
script.onerror = reject;
document.head.appendChild(script);
}
window.initAMap = () => {
resolve(window.AMap);
}
})
}
以上就是“一些非常實(shí)用的JS前端面試題”,你能回答上來(lái)嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743