前端常見(jiàn)面試題(十)

目錄:

1,簡(jiǎn)述同步和異步的區(qū)別

2, 數(shù)組去重(手寫(xiě)代碼)

3, 在JavaScript中什么是偽數(shù)組?如何將偽數(shù)組轉(zhuǎn)化為標(biāo)準(zhǔn)數(shù)組

4, SPA路由history模式,打包上線(xiàn)都遇到了哪些問(wèn)題?你是如何解決的?

5, JavaScript中callee和caller的作用

簡(jiǎn)述同步和異步的區(qū)別

眾所周知,javascript是單線(xiàn)程的語(yǔ)言,所謂的單線(xiàn)程,就是從上至下,依次執(zhí)行,當(dāng)然這里的依次執(zhí)行要拋開(kāi)javascript的預(yù)解析機(jī)制。

這樣做的原因是因?yàn)閖avascript最初是為了操作DOM,運(yùn)行在瀏覽器環(huán)境下的,而操作DOM的時(shí)候,不能是異步的,不然的話(huà)兩個(gè)異步任務(wù)同時(shí)修改DOM結(jié)構(gòu)的話(huà),會(huì)導(dǎo)致瀏覽器不知道該執(zhí)行哪一個(gè)。

但是這樣做也有缺點(diǎn),當(dāng)遇到一個(gè)響應(yīng)時(shí)間特別長(zhǎng)的任務(wù)時(shí),容易導(dǎo)致頁(yè)面加載錯(cuò)誤或者瀏覽器未響應(yīng)的情況。

同步就是所有的任務(wù)都處在同一隊(duì)列中,不可以插隊(duì),一個(gè)任務(wù)執(zhí)行完接著開(kāi)始執(zhí)行下一個(gè),相對(duì)于瀏覽器而言,同步的效率過(guò)低,一些耗費(fèi)時(shí)間比較長(zhǎng)的任務(wù)應(yīng)該用異步來(lái)執(zhí)行。

異步就是將一個(gè)任務(wù)放入到異步隊(duì)列中,當(dāng)這個(gè)任務(wù)執(zhí)行完成之后,再?gòu)漠惒疥?duì)列中提取出來(lái),插隊(duì)到同步隊(duì)列中,拿到異步任務(wù)的結(jié)果,可以提升代碼執(zhí)行的效率,不需要因?yàn)橐粋€(gè)耗費(fèi)時(shí)長(zhǎng)的代碼而一直等待。



數(shù)組去重(手寫(xiě)代碼)

1,使用ES6的Set去重

Set是ES6新增的數(shù)據(jù)類(lèi)型,Set 的成員具有唯一性

2,使用splice配合兩重for循環(huán)去重

3,使用for循環(huán)配合indexOf去重

4,使用for循環(huán)配合sort排序去重

5,使用for循環(huán)配合includes去重

6.使用filter配合indexOf去重

三:在JavaScript中什么是偽數(shù)組?如何將偽數(shù)組轉(zhuǎn)化為標(biāo)準(zhǔn)數(shù)組

javascript中的偽數(shù)組(類(lèi)數(shù)組):不具有數(shù)組的push,pop等方法,但是具有l(wèi)ength,以及可以利用for循環(huán)遍歷等特性,例如函數(shù)的 arguments 參數(shù)集合,還有通過(guò)document.getElementsByTagName等方法獲取的NodeList等都是類(lèi)數(shù)組

如何將偽數(shù)組轉(zhuǎn)化為標(biāo)準(zhǔn)數(shù)組?

四:SPA路由history模式,打包上線(xiàn)都遇到了哪些問(wèn)題?你是如何解決?

1,資源路徑404問(wèn)題

2,頁(yè)面刷新404問(wèn)題

五:JavaScript中callee和caller的作用

1:callee是函數(shù)arguments對(duì)象內(nèi)的指針,它指向當(dāng)前的函數(shù),使得在函數(shù)內(nèi)部遞歸調(diào)用當(dāng)前函數(shù)時(shí),不需要調(diào)用函數(shù)名稱(chēng),減少函數(shù)內(nèi)部對(duì)于函數(shù)名的依賴(lài)

2:caller是函數(shù)的一個(gè)屬性,它指向調(diào)用當(dāng)前函數(shù)的函數(shù),如果當(dāng)前函數(shù)在其他函數(shù)內(nèi)被調(diào)用,則返回調(diào)用它的那個(gè)函數(shù),如果是在全局環(huán)境下被調(diào)用,則返回 null

我們可以利用caller的特性跟蹤函數(shù)的調(diào)用鏈


完結(jié)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • new操作符干了什么? 我們可以一起通過(guò)代碼實(shí)現(xiàn)來(lái)看看new關(guān)鍵字到底做了一些什么事情 輸出結(jié)果如下圖: 上例中,...
    郝晨光閱讀 1,492評(píng)論 0 14
  • 簡(jiǎn)述同步和異步的區(qū)別 眾所周知,javascript是單線(xiàn)程的語(yǔ)言,所謂的單線(xiàn)程,就是從上至下,依次執(zhí)行,當(dāng)然這里...
    郝晨光閱讀 1,895評(píng)論 1 21
  • 一、理論基礎(chǔ)知識(shí)部分 1.1、講講輸入完網(wǎng)址按下回車(chē),到看到網(wǎng)頁(yè)這個(gè)過(guò)程中發(fā)生了什么 a. 域名解析 b. 發(fā)起T...
    我家媳婦蠢蠢噠閱讀 3,243評(píng)論 2 106
  • 第5章 引用類(lèi)型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類(lèi)型 使用基本類(lèi)型...
    大學(xué)一百閱讀 3,674評(píng)論 0 4
  • 之前看了Red velvet上的《認(rèn)識(shí)的哥哥》那一期節(jié)目。明明是綜藝節(jié)目,我卻無(wú)法開(kāi)心的起來(lái)。 Yeri是個(gè)比我還...
    維他命xi閱讀 310評(píng)論 0 2

友情鏈接更多精彩內(nèi)容