
英文 | https://javascript.plainenglish.io/50-questions-to-master-the-javascript-coding-interview-639d2ac12630
翻譯 | web前端開發(fā)公眾號
1、以下哪個先打?。?/span>

答案是第二種情況(打印出queueMicroTask更好),因為來自queueMicroTask的任務(wù)在調(diào)用棧為空之后且在調(diào)用事件循環(huán)之前被調(diào)用,對于setTimeout而言,任務(wù)是eventQeue的一部分。2、控制臺輸出是什么?

答案是輸出為10,因為將對象傳遞給函數(shù)時的對象相似,僅傳遞其值,而不傳遞對內(nèi)存位置的實際引用。這就是為什么更改僅影響函數(shù)范圍內(nèi)的參數(shù)的原因。3、控制臺輸出是什么?

在這種情況下,由于我們兩次定義了相同的變量,因此,會在控制臺上引發(fā)錯誤。但是,如果我們使用var定義相同的變量,則控制臺將返回50 。同樣,在使用const定義變量時,我們將得到相同的錯誤。4、Line1和Line2的控制臺輸出是什么?

在Line1中,我們有兩個相互比較的對象,并且它們都是唯一的,因此它將在控制臺上記錄為False。在Line2中,我們使用===運算符來檢查兩個字符串基元而不是字符串對象,因此我們得到True。5、控制臺輸出是什么,為什么?

與之前的問題類似,我們比較了兩個唯一的對象。在這種情況下,只有一個唯一的對象,它具有兩個常量x和y,它們指向內(nèi)存中的唯一對象,并在控制臺上返回True。6、數(shù)組對象是JavaScript中的原始對象嗎?
在JavaScript中,我們處理的大多數(shù)事物都是對象,類似地,數(shù)組只是JavaScript中的特殊對象,它們具有其他對象所沒有的屬性。7、以下函數(shù)的返回類型是什么?

答案,是B,因為異步函數(shù)在JavaScript中返回Promises 。8、等待關(guān)鍵字會阻止應(yīng)用程序中的所有JavaScript代碼執(zhí)行,直到返回等待的Promises?
答案是False,await關(guān)鍵字僅阻止執(zhí)行包含await關(guān)鍵字的特定函數(shù)內(nèi)的代碼。9、以下打印什么?

JavaScript中的函數(shù)是對象,typeof name將輸出function。10、以下是用于打印“用戶名”的有效語法?

以下語法是有效的,因為我們正在將異步函數(shù)的返回值傳遞給callback。
11、typeof和instanceof之間沒有什么區(qū)別?
typeof返回類型, instanceof返回布爾值。instanceof需要TypeScript,而typeof則不需要。typeof在右側(cè)使用變量名稱, instanceof在左側(cè)和右側(cè)使用值,而不是。答案是B,因為它們都不要求TypeScript,并且兩者都不是JavaScript固有的。12、滿足所有承諾后,以下哪個解決方案可以解決?

答案是C,當(dāng)我們需要等待執(zhí)行直到所有的都被解決時,Promise.all()會非常有用。
在這種情況下,我們有&運算符,它與&&運算符完全不同。&是按位運算符,當(dāng)我們比較11和3時,它將與1011和0011的二進制相同。結(jié)果,只有都為1的位保持為1,返回的輸出為0011,它是3的二進制表示形式, 因此3記錄在控制臺上。14、Object。[[Prototype]]的值是什么?
答案是null,因為默認值的對象。[[原型]為空,它會返回undefined在控制臺上。該對象位于原型鏈的頂部,當(dāng)瀏覽器查找訪問屬性的值時,它將遍歷原型鏈,直到找到該值或直到不再遍歷所有原型為止。15、空值合并運算符做什么?
當(dāng)左側(cè)操作數(shù)為null或未定義時,它將返回右側(cè)操作數(shù)。16、getElementsByTagName是JavaScript函數(shù)嗎?
不,getElementsByTagName是一個Web API函數(shù),就像普通的JS函數(shù)一樣可用。17、在JavaScript中使用事件委托時
例如,當(dāng)我們必須偵聽頁面加載期間可能不存在的事件時,可以使用事件委托,并在父元素上提供事件處理程序并查看event.target。但是,如今,現(xiàn)代的前端框架和庫使此操作變得不必要了。18、以下哪一項不是內(nèi)置的JS錯誤類型?

19、以下哪一項不是有效的Promise方法?

20、創(chuàng)建字符串后,我們可以修改它嗎?
不可以,因為字符串在JavaScript中是不可變的,指向字符串的變量可以分配給另一個字符串。21、承諾鏈中的嵌套捕獲可以捕獲在承諾鏈中向上拋出的錯誤嗎?
不可以,嵌套是一種用于限制catch語句范圍的控制結(jié)構(gòu)。用簡單的話來說,嵌套的catch僅捕獲其作用域及其以下范圍內(nèi)的故障,而不捕獲嵌套范圍之外的鏈中較高的錯誤。22、控制臺輸出是什么,為什么?

即使mymap.get({})是有效的語法,它也會在控制臺上返回undefined。因為set和get中的Object是內(nèi)存中兩個不同的空對象,因此getter不會返回值。23、控制臺輸出是什么,為什么?

控制臺輸出將為Map {'a'=> 2,'b'=> 2,'c'=> 1},這意味著第二個映射中的所有相同鍵將覆蓋第一個映射中的鍵。24、括號符號可以像點符號一樣鏈接嗎?
是的,可以,obj.prop1.prop2和obj ['prop1'] ['prop2']是等效的。25、for…in循環(huán)中會顯示什么類型的屬性?

26、以下內(nèi)容是什么?

控制臺輸出將為'Mohit',因為內(nèi)部函數(shù)有權(quán)訪問在外部作用域中聲明的變量。27、函數(shù)引用自身進行遞歸的三種方式是什么?
該函數(shù)的名稱,一個指向該函數(shù)的范圍內(nèi)變量,并使用arguments.callee。28、JavaScript是否支持重載?
不,JavaScript本身不支持重載,但TypeScript可以。但是,可以在JavaScript中通過在未將所有可能的參數(shù)都傳遞給函數(shù)時返回不同的輸出來執(zhí)行重載。29、return語句在數(shù)組的forEach循環(huán)中做什么?
它不會返回任何內(nèi)容,并且如果你需要從循環(huán)中返回值,則永遠不要使用forEach循環(huán)。30、RegExp沒有任何屬性。那是對的嗎?
不,RegExp具有許多屬性,例如.flags和.global。31、控制臺輸出是什么?

控制臺輸出將為10和5,因為該函數(shù)在Promise中沒有異步的內(nèi)容,并且Promise同步解析。32、在瀏覽器下一次重畫顯示內(nèi)容之前,哪個函數(shù)會執(zhí)行指定的代碼塊?

33、為什么在導(dǎo)入模塊時使用別名?
大多數(shù)時候,我們處理具有默認命名約定的簡單導(dǎo)入,除此之外,有時我們不得不處理名稱,因為有的名稱較長。在這種情況下,使用別名是有幫助的。34、使用縮減函數(shù)從數(shù)字數(shù)組中找到最小值。

35、JavaScript中的子程序是什么?
子例程是主例程中遇到的函數(shù),然后將其保存到對象并存儲以供以后使用。例如,執(zhí)行范圍(變量,參數(shù)等)與子例程一起存儲。36、我們可以使用eventHandlers剪切和復(fù)制來防止用戶將內(nèi)容從瀏覽器復(fù)制到剪貼板嗎?
37、創(chuàng)建新對象的三種可能方法是什么?
new Object()&Object.create()和文字符號,其中我們定義了像this-(const obj = {a:2})這樣的對象。38、控制臺輸出是什么,為什么?

一個被分配到一個對象,b被分配給一個使用該擴展運算符,它意味著一個和b在技術(shù)上是相同的。使用Object.assign()中,c現(xiàn)在被指定到一個,并且后來在這之后,我們改變的值X在一個作為2。39、Object.freeze()的作用是什么?
40、event.target與event.currentTarget有何不同?
event.currentTarget隨著事件起泡而變化,event.target保持不變。41、Array sort()方法的默認排序是什么?
42、什么是比賽條件?
當(dāng)兩個線程或異步進程必須完成自身操作以更新某些共享狀態(tài)時,否則將出現(xiàn)錯誤或不良結(jié)果。43、class關(guān)鍵字在JavaScript中有什么作用?
使JavaScript更加面向?qū)ο笾皇钦Z法上,即使使用class關(guān)鍵字,JavaScript仍會使用原型繼承。44、 queueMicrotask隊列中的任務(wù)是在后進先出的基礎(chǔ)上執(zhí)行的。真的嗎?
否,任務(wù)按照先進先出的順序執(zhí)行。45、什么是Shadow DOM API?
陰影DOM API提供了一種隱藏的單獨的DOM,附加到不是通過正常的訪問元件JS DOM操作API。它提供Web組件的封裝。46、使用哪種方法將影子DOM樹附加到指定的元素,并返回對其ShadowRoot的引用?
47、控制臺輸出是什么,為什么?

它返回h,因為數(shù)組在JavaScript中是從零開始的,因此arr [2] [1]將可以訪問外部數(shù)組的第3個元素和內(nèi)部數(shù)組的第2個元素,從而得出值“ h”。48、window.localStorage和window.sessionStorage有什么區(qū)別?
它們都將值對存儲在Web瀏覽器中,但是sessionStorage在瀏覽器關(guān)閉后會刪除存儲的值。49、!運算符返回一個布爾值。真的嗎?
是的,例如,在if語句中,需要在評估中返回一個布爾值,例如if(a!== b)。50、JavaScript中的哪個ES6函數(shù)返回一個新數(shù)組?
