Js面試題整理

src和href的區別

  1. href是指向網絡資源所在位置,創建和當前元素(錨點)或當前文檔(連接)之間的連接,用於超連接。
  2. src是指向外部資源的位置,指向的內容將會嵌入到文檔中當前標籤所在位置。javascript

    1. 在請求src資源時會將其指向的資源下載並應用到文檔內,例如js腳本,img圖片和frame等元素。
    2. 當瀏覽器解析到該元素時,會暫停其餘資源的下載和處理,直到將該資源加載、編譯、執行完畢,圖片和框架等元素也如此,相似於將所指向資源嵌入當前標籤內。這也是爲何將js腳本放在底部而不是頭部。

觀察者和訂閱-發佈的區別

  1. 觀察者模式裏,只有兩個角色 —— 觀察者 + 被觀察者
  2. 而發佈訂閱模式裏,卻不單單隻有發佈者和訂閱者兩個角色,還有一個常常被咱們忽略的 —— 經紀人Broker

往更深層次講:
觀察者和被觀察者,是鬆耦合的關係
發佈者和訂閱者,則徹底不存在耦合java

從使用層面上講:
觀察者模式,多用於單個應用內部
發佈訂閱模式,則更多的是一種跨應用的模式(cross-application pattern),好比咱們經常使用的消息中間件git

delete數組的item,數組的length是否會 -1

只是被刪除的元素變成了 undefined 其餘的元素仍是不變,也就是說數組長度沒變es6

給出 ['1', '3', '10'].map(parseInt) 執行結果

parseInt(string, radix)github

string:須要轉化的字符,若是不是字符串會被轉換,忽視空格符。
radix:數字2-36之間的整型。默認使用10,表示10進制。這個參數的意義是指把前面的字符看做多少進制的數字,所謂的基數。數組

若是radix在2-36以外會返回NaN。
在沒有指定基數,或者基數爲0的狀況下,javascript做以下處理:瀏覽器

  1. 若是字符串string以 「0x」 或者 「0X」 開頭,則基數是16,16進制;
  2. 若是字符串string以 「0」 開頭,基數是8(8進制)或者10(10進制),根據實現環境決定。
  3. 若是字符串string 以其餘任何值開頭,則基數是10,10進制。

Proxy 相比於 defineProperty 的優點

Async/Await 如何經過同步的方式實現異步

https://es6.ruanyifeng.com/#docs/generator-async

箭頭函數能夠new嗎?爲何?

箭頭函數、沒有prototype、沒有本身的this指向、不能夠使用arguments、天然不能夠new。
若是new的時候會報錯 function is not a constructor網絡

異步隊列

https://github.com/Advanced-F...app

一個iframe,內嵌了一個A頁面,iframe的寬高不停變化,如何讓A頁面的寬高實時自適應這個iframe的寬高大小。請說出至少3種方法,越難越好框架

解釋一下在js裏,0.1 0.2爲何等於0.30000000000000004,如何經過代碼解決這個問題?

如何避免重繪或者重排?

  1. 當 DOM 元素的屬性發生變化 (如 color) 時, 瀏覽器會通知 render 從新描繪相應的元素, 此過程稱爲 repaint。
  2. 若是該次變化涉及元素佈局 (如 width), 瀏覽器則拋棄原有屬性, 從新計算並把結果傳遞給 render 以從新描繪頁面元素, 此過程稱爲 reflow。
  3. 迴流一定會發生重繪,重繪不必定會引起迴流。

typeof和instanceof 區別

instanceof 運算符用來檢測 constructor.prototype 是否存在於參數的原型鏈上
typeof操做符返回一個字符串,指示未經計算的操做數的類型。

談談變量提高?

1. 只有聲明自己會被提高,而賦值或其餘運行邏輯會留在原地。
2. 每一個做用域都會進行提高操做。
3. 函數聲明會被提高,可是函數表達式卻不會被提高。
4. 函數聲明和變量聲明都會被提高,是函數會首先被提高,而後纔是變量。
5. let和const進行的聲明不會在塊做用域中進行提高。

defer和async區別

defer

  1. 瀏覽器開始解析 HTML 網頁。
  2. 解析過程當中,發現帶有defer屬性的<script>元素。
  3. 瀏覽器繼續往下解析 HTML 網頁,同時並行下載<script>元素加載的外部腳本。
  4. 瀏覽器完成解析 HTML 網頁,此時再回過頭執行已經下載完成的腳本。

async

  1. 瀏覽器開始解析 HTML 網頁。
  2. 解析過程當中,發現帶有async屬性的script標籤。
  3. 瀏覽器繼續往下解析 HTML 網頁,同時並行下載<script>標籤中的外部腳本。
  4. 腳本下載完成,瀏覽器暫停解析 HTML 網頁,開始執行下載的腳本。
  5. 腳本執行完畢,瀏覽器恢復解析 HTML 網頁。

requestAnimationFrame

它僅僅繪製用戶可見的動畫。這意味着沒把 CPU 或電池壽命浪費在繪製處於背景標籤,最小化窗口,或者頁面隱藏區域的動畫上瀏覽器能夠把同一頁面的多處動畫,保持在單一的迴流和重繪週期裏

相關文章
相關標籤/搜索