<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          50道JavaScript詳解面試題,你需要了解一下

          共 4162字,需瀏覽 9分鐘

           ·

          2021-04-24 05:58

          英文 | https://javascript.plainenglish.io/50-questions-to-master-the-javascript-coding-interview-639d2ac12630

          翻譯 | web前端開發(fā)公眾號(hào)


          1、以下哪個(gè)先打印?

          答案是第二種情況(打印出queueMicroTask更好),因?yàn)閬?lái)自queueMicroTask的任務(wù)在調(diào)用棧為空之后且在調(diào)用事件循環(huán)之前被調(diào)用,對(duì)于setTimeout而言,任務(wù)是eventQeue的一部分。

          2、控制臺(tái)輸出是什么?

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

          3、控制臺(tái)輸出是什么?

          在這種情況下,由于我們兩次定義了相同的變量,因此,會(huì)在控制臺(tái)上引發(fā)錯(cuò)誤。
          但是,如果我們使用var定義相同的變量,則控制臺(tái)將返回50 。同樣,在使用const定義變量時(shí),我們將得到相同的錯(cuò)誤。

          4、Line1和Line2的控制臺(tái)輸出是什么?

          在Line1中,我們有兩個(gè)相互比較的對(duì)象,并且它們都是唯一的,因此它將在控制臺(tái)上記錄為False。
          在Line2中,我們使用===運(yùn)算符來(lái)檢查兩個(gè)字符串基元而不是字符串對(duì)象,因此我們得到True。

          5、控制臺(tái)輸出是什么,為什么?

          與之前的問(wèn)題類似,我們比較了兩個(gè)唯一的對(duì)象。在這種情況下,只有一個(gè)唯一的對(duì)象,它具有兩個(gè)常量x和y,它們指向內(nèi)存中的唯一對(duì)象,并在控制臺(tái)上返回True。

          6、數(shù)組對(duì)象是JavaScript中的原始對(duì)象嗎?

          在JavaScript中,我們處理的大多數(shù)事物都是對(duì)象,類似地,數(shù)組只是JavaScript中的特殊對(duì)象,它們具有其他對(duì)象所沒有的屬性。

          7、以下函數(shù)的返回類型是什么?

          答案,是B,因?yàn)楫惒胶瘮?shù)在JavaScript中返回Promises 。

          8、等待關(guān)鍵字會(huì)阻止應(yīng)用程序中的所有JavaScript代碼執(zhí)行,直到返回等待的Promises?

          答案是False,await關(guān)鍵字僅阻止執(zhí)行包含await關(guān)鍵字的特定函數(shù)內(nèi)的代碼。

          9、以下打印什么?

          JavaScript中的函數(shù)是對(duì)象,typeof name將輸出function。

          10、以下是用于打印“用戶名”的有效語(yǔ)法?

          以下語(yǔ)法是有效的,因?yàn)槲覀冋趯惒胶瘮?shù)的返回值傳遞給callback。

          11、typeof和instanceof之間沒有什么區(qū)別?

          typeof返回類型, instanceof返回布爾值。
          instanceof需要TypeScript,而typeof則不需要。
          typeof在右側(cè)使用變量名稱, instanceof在左側(cè)和右側(cè)使用值,而不是。
          答案是B,因?yàn)樗鼈兌疾灰骉ypeScript,并且兩者都不是JavaScript固有的。

          12、滿足所有承諾后,以下哪個(gè)解決方案可以解決?

          答案是C,當(dāng)我們需要等待執(zhí)行直到所有的都被解決時(shí),Promise.all()會(huì)非常有用。
          13、控制臺(tái)輸出是什么,為什么?

          在這種情況下,我們有&運(yùn)算符,它與&&運(yùn)算符完全不同。&是按位運(yùn)算符,當(dāng)我們比較11和3時(shí),它將與1011和0011的二進(jìn)制相同。結(jié)果,只有都為1的位保持為1,返回的輸出為0011,它是3的二進(jìn)制表示形式, 因此3記錄在控制臺(tái)上。

          14、Object。[[Prototype]]的值是什么?

          • Object
          • null
          • {}
          答案是null,因?yàn)槟J(rèn)值的對(duì)象。[[原型]為空,它會(huì)返回undefined在控制臺(tái)上。該對(duì)象位于原型鏈的頂部,當(dāng)瀏覽器查找訪問(wèn)屬性的值時(shí),它將遍歷原型鏈,直到找到該值或直到不再遍歷所有原型為止。

          15、空值合并運(yùn)算符做什么?

          當(dāng)左側(cè)操作數(shù)為null或未定義時(shí),它將返回右側(cè)操作數(shù)。

          16、getElementsByTagName是JavaScript函數(shù)嗎?

          不,getElementsByTagName是一個(gè)Web API函數(shù),就像普通的JS函數(shù)一樣可用。

          17、在JavaScript中使用事件委托時(shí)

          例如,當(dāng)我們必須偵聽頁(yè)面加載期間可能不存在的事件時(shí),可以使用事件委托,并在父元素上提供事件處理程序并查看event.target。但是,如今,現(xiàn)代的前端框架和庫(kù)使此操作變得不必要了。

          18、以下哪一項(xiàng)不是內(nèi)置的JS錯(cuò)誤類型?

          答案是E。

          19、以下哪一項(xiàng)不是有效的Promise方法?

          答案是A。

          20、創(chuàng)建字符串后,我們可以修改它嗎?

          不可以,因?yàn)樽址贘avaScript中是不可變的,指向字符串的變量可以分配給另一個(gè)字符串。

          21、承諾鏈中的嵌套捕獲可以捕獲在承諾鏈中向上拋出的錯(cuò)誤嗎?

          不可以,嵌套是一種用于限制catch語(yǔ)句范圍的控制結(jié)構(gòu)。用簡(jiǎn)單的話來(lái)說(shuō),嵌套的catch僅捕獲其作用域及其以下范圍內(nèi)的故障,而不捕獲嵌套范圍之外的鏈中較高的錯(cuò)誤。

          22、控制臺(tái)輸出是什么,為什么?

          即使mymap.get({})是有效的語(yǔ)法,它也會(huì)在控制臺(tái)上返回undefined。因?yàn)閟et和get中的Object是內(nèi)存中兩個(gè)不同的空對(duì)象,因此getter不會(huì)返回值。

          23、控制臺(tái)輸出是什么,為什么?

          控制臺(tái)輸出將為Map {'a'=> 2,'b'=> 2,'c'=> 1},這意味著第二個(gè)映射中的所有相同鍵將覆蓋第一個(gè)映射中的鍵。

          24、括號(hào)符號(hào)可以像點(diǎn)符號(hào)一樣鏈接嗎?

          是的,可以,obj.prop1.prop2和obj ['prop1'] ['prop2']是等效的。

          25、for…in循環(huán)中會(huì)顯示什么類型的屬性?

          答案是B,可枚舉屬性。

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

          控制臺(tái)輸出將為'Mohit',因?yàn)閮?nèi)部函數(shù)有權(quán)訪問(wèn)在外部作用域中聲明的變量。

          27、函數(shù)引用自身進(jìn)行遞歸的三種方式是什么?

          該函數(shù)的名稱,一個(gè)指向該函數(shù)的范圍內(nèi)變量,并使用arguments.callee。

          28、JavaScript是否支持重載?

          不,JavaScript本身不支持重載,但TypeScript可以。但是,可以在JavaScript中通過(guò)在未將所有可能的參數(shù)都傳遞給函數(shù)時(shí)返回不同的輸出來(lái)執(zhí)行重載。

          29、return語(yǔ)句在數(shù)組的forEach循環(huán)中做什么?

          它不會(huì)返回任何內(nèi)容,并且如果你需要從循環(huán)中返回值,則永遠(yuǎn)不要使用forEach循環(huán)。

          30、RegExp沒有任何屬性。那是對(duì)的嗎?

          不,RegExp具有許多屬性,例如.flags和.global。

          31、控制臺(tái)輸出是什么?

          控制臺(tái)輸出將為10和5,因?yàn)樵摵瘮?shù)在Promise中沒有異步的內(nèi)容,并且Promise同步解析。

          32、在瀏覽器下一次重畫顯示內(nèi)容之前,哪個(gè)函數(shù)會(huì)執(zhí)行指定的代碼塊?

          requestAnimationFrame()。

          33、為什么在導(dǎo)入模塊時(shí)使用別名?

          大多數(shù)時(shí)候,我們處理具有默認(rèn)命名約定的簡(jiǎn)單導(dǎo)入,除此之外,有時(shí)我們不得不處理名稱,因?yàn)橛械拿Q較長(zhǎng)。在這種情況下,使用別名是有幫助的。

          34、使用縮減函數(shù)從數(shù)字?jǐn)?shù)組中找到最小值。

          35、JavaScript中的子程序是什么?

          子例程是主例程中遇到的函數(shù),然后將其保存到對(duì)象并存儲(chǔ)以供以后使用。例如,執(zhí)行范圍(變量,參數(shù)等)與子例程一起存儲(chǔ)。

          36、我們可以使用eventHandlers剪切和復(fù)制來(lái)防止用戶將內(nèi)容從瀏覽器復(fù)制到剪貼板嗎?

          是的,這些事件處理程序是Web API的一部分。

          37、創(chuàng)建新對(duì)象的三種可能方法是什么?

          new Object()&Object.create()和文字符號(hào),其中我們定義了像this-(const obj = {a:2})這樣的對(duì)象。

          38、控制臺(tái)輸出是什么,為什么?

          一個(gè)被分配到一個(gè)對(duì)象,b被分配給一個(gè)使用該擴(kuò)展運(yùn)算符,它意味著一個(gè)和b在技術(shù)上是相同的。
          c只是一個(gè)空對(duì)象。
          使用Object.assign()中,c現(xiàn)在被指定到一個(gè),并且后來(lái)在這之后,我們改變的值X在一個(gè)作為2。
          控制臺(tái)輸出將為2,1,1。

          39、Object.freeze()的作用是什么?

          它防止添加新屬性。
          它可以防止更改對(duì)象的原型。
          它防止更改屬性的值。
          它防止更改屬性的可寫性。

          40、event.target與event.currentTarget有何不同?

          event.currentTarget隨著事件起泡而變化,event.target保持不變。

          41、Array sort()方法的默認(rèn)排序是什么?

          按字符值從最小到最大。

          42、什么是比賽條件?

          當(dāng)兩個(gè)線程或異步進(jìn)程必須完成自身操作以更新某些共享狀態(tài)時(shí),否則將出現(xiàn)錯(cuò)誤或不良結(jié)果。

          43、class關(guān)鍵字在JavaScript中有什么作用?

          使JavaScript更加面向?qū)ο笾皇钦Z(yǔ)法上,即使使用class關(guān)鍵字,JavaScript仍會(huì)使用原型繼承。

          44、 queueMicrotask隊(duì)列中的任務(wù)是在后進(jìn)先出的基礎(chǔ)上執(zhí)行的。真的嗎?

          否,任務(wù)按照先進(jìn)先出的順序執(zhí)行。

          45、什么是Shadow DOM API?

          陰影DOM API提供了一種隱藏的單獨(dú)的DOM,附加到不是通過(guò)正常的訪問(wèn)元件JS DOM操作API。它提供Web組件的封裝。

          46、使用哪種方法將影子DOM樹附加到指定的元素,并返回對(duì)其ShadowRoot的引用?

          Element.attachShadow()。

          47、控制臺(tái)輸出是什么,為什么?

          它返回h,因?yàn)閿?shù)組在JavaScript中是從零開始的,因此arr [2] [1]將可以訪問(wèn)外部數(shù)組的第3個(gè)元素和內(nèi)部數(shù)組的第2個(gè)元素,從而得出值“ h”。

          48、window.localStorage和window.sessionStorage有什么區(qū)別?

          它們都將值對(duì)存儲(chǔ)在Web瀏覽器中,但是sessionStorage在瀏覽器關(guān)閉后會(huì)刪除存儲(chǔ)的值。

          49、!運(yùn)算符返回一個(gè)布爾值。真的嗎?

          是的,例如,在if語(yǔ)句中,需要在評(píng)估中返回一個(gè)布爾值,例如if(a!== b)。

          50、JavaScript中的哪個(gè)ES6函數(shù)返回一個(gè)新數(shù)組?

          map()和filter()。



          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欲天堂导航 | 欧美激情精品成人 | 日韩 欧美 国产高清91 | 青青草在线视频免费播放 | 亚洲区小说区图片区 |