更新時(shí)間:2023-01-29 11:27:03 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1340次
最近小編看到不少同學(xué)在求助這想要找一套比較專業(yè)的Js面試題,今天小編主要針對(duì)這一點(diǎn)從各大論壇以及從老師那里套取出的一些大廠高頻出現(xiàn)的相關(guān)Js面試題,做出了以下整理,分享給大家,希望能夠?yàn)榇蠹襾硪淮稳轿坏牟槁┭a(bǔ)缺。
1. JS延遲加載的方式有哪些?
一般有六種方式;defer屬性、async屬性、動(dòng)態(tài)創(chuàng)建dom方式、使用jquery的getScript方法、使用setTimeout延遲方法、讓js最后加載。
defer屬性:延遲腳本。立即下載,但延遲執(zhí)行(延遲到整個(gè)頁面都解析完畢后再運(yùn)行),按照腳本出現(xiàn)的先后順序執(zhí)行。
async屬性:異步腳本。下載完立即執(zhí)行,但不保證按照腳本出現(xiàn)的先后順序執(zhí)行;
動(dòng)態(tài)創(chuàng)建dom方式
使用jquery的getScript方法:getScript() 方法通過 HTTP GET 請(qǐng)求載入并執(zhí)行 JavaScript 文件。
語法:jQuery.getScript(url,success(response,status))
使用setTimeout延遲方法
讓js最后加載 將腳本元素放在文檔體的底端(標(biāo)簽前面),這樣腳本就可以在HTML解析完畢后加載了。但此方案的問題是,只有在所有HTML DOM加載完成后才開始腳本的加載/解析過程。對(duì)于有大量js代碼的大型網(wǎng)站,可能會(huì)帶來顯著的性能損耗。
2.同步和異步的區(qū)別?
同步的概念在操作系統(tǒng)中:不同進(jìn)程協(xié)同完成某項(xiàng)工作而先后次序調(diào)整(通過阻塞、喚醒等方式),同步強(qiáng)調(diào)的是順序性,誰先誰后。異步不存在順序性。
同步:瀏覽器訪問服務(wù)器,用戶看到頁面刷新,重新發(fā)請(qǐng)求,等請(qǐng)求完,頁面刷新,新內(nèi)容出現(xiàn),用戶看到新內(nèi)容之后進(jìn)行下一步操作。
異步:瀏覽器訪問服務(wù)器請(qǐng)求,用戶正常操作,瀏覽器在后端進(jìn)行請(qǐng)求。等請(qǐng)求完,頁面不刷新,新內(nèi)容也會(huì)出現(xiàn),用戶看到新內(nèi)容。
3.call和applyd的區(qū)別?
call()方法和apply()方法的作用相同,動(dòng)態(tài)改變某個(gè)類的某個(gè)方法的運(yùn)行環(huán)境。他們的區(qū)別在于接收參數(shù)的方式不同。
區(qū)別:
在使用call()方法時(shí),傳遞給函數(shù)的參數(shù)必須逐個(gè)列舉出來
使用apply()時(shí),傳遞給函數(shù)的是參數(shù)數(shù)組。
4.documen.write和 innerHTML的區(qū)別?
document.write()只能重繪整個(gè)頁面
setTimeout(function(){
document.write('<p>5 secs later</p>');
}, 5000);
或者
window.onload = function() { document.write("HI");
innerHTML可以重繪頁面的一部分
5.數(shù)組對(duì)象有哪些原生方法,列舉一下?
pop、push、shift、unshift、splice、reverse、sort、concat、join、slice、toString、indexOf、lastIndexOf、reduce、reduceRight、forEach、map、filter、every、some
6.Javascript實(shí)現(xiàn)繼承的幾種方式?
Javascript實(shí)現(xiàn)繼承有三種方式:
方式一:構(gòu)造函數(shù)法(又叫經(jīng)典繼承)
function SuperType(name) {
this.name = name;
this.sayName = function() {
window.alert(this.name);
};
}
function SubType(name, age) {
SuperType.call(this, name); //在這里借用了父類的構(gòu)造函數(shù)
this.age = age;
}
方式二:對(duì)象冒充
function SuperType(name) {
this.name = name;
this.sayName = function() {
window.alert(this.name);
}
}
function SubType(name, age) {
this.supertype = SuperType; //在這里使用了對(duì)象冒充
this.supertype(name);
this.age = age;
}
方式三:組合繼承(最常用)
function SuperType(name) {
this.name = name
}
SuperType.prototype = {
sayName : function() {
window.alert(this.name);
}
};
function SubType(name, age) {
SuperType.call(this, name); //在這里繼承屬性
this.age = age;
}
SubType.prototype = new SuperType(); //在原型上繼承方法
7、什么是閉包(closure),說說優(yōu)缺點(diǎn)?
閉包:指的是一個(gè)函數(shù)可以訪問另一個(gè)函數(shù)作用域中變量。常見的構(gòu)造方法,是在一個(gè)函數(shù)內(nèi)部定義另外一個(gè)函數(shù)。內(nèi)部函數(shù)可以引用外層的變量;外層變量不會(huì)被垃圾回收機(jī)制回收。
注意,閉包的原理是作用域鏈,所以閉包訪問的上級(jí)作用域中的變量是個(gè)對(duì)象,其值為其運(yùn)算結(jié)束后的最后一個(gè)值。
優(yōu)缺點(diǎn):
優(yōu)點(diǎn):避免全局變量污染。
缺點(diǎn):容易造成內(nèi)存泄漏。
8、new操作符具體干了什么呢?
創(chuàng)建一個(gè)空對(duì)象,并且 this 變量引用該對(duì)象,同時(shí)還繼承了該函數(shù)的原型。
屬性和方法被加入到 this 引用的對(duì)象中。
新創(chuàng)建的對(duì)象由 this 所引用,并且最后隱式的返回 this 。
以上就是“高頻出現(xiàn)的一些Js面試題及答案”,你能回答上來嗎?如果想要了解更多的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)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)