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