千鋒教育web前端高頻面試題視頻教程,kerwin大話前端面試秘籍(附答案)

P05:一、js有哪些內(nèi)置基本對象?
(1)內(nèi)置基本對象是什么?
內(nèi)置基本對象是指在JavaScript運行環(huán)境中預(yù)先定義好的一組對象,開發(fā)者可以直接使用它們而無需額外的導(dǎo)入或聲明。這些對象包含了一系列的屬性和方法,用于解決常見的任務(wù)和問題。
(2)js有哪些內(nèi)置基本對象(分三類)
- 數(shù)據(jù)封裝類對象:Obiect(對象)、Array(數(shù)組)、Boolean(布爾值)、Number(數(shù)字)、String(字符串)。
- ES6新增對象:Symbol(標(biāo)識唯一性的ID)、Map(映射)、Set(集合)、Promises(處理一步操作)、Proxy(代理)、Reflect(反射)。
- 其他對象:Function(函數(shù))、RegExp(正則表達式)、Math(數(shù)學(xué))、Data(日期)、Error(處理錯誤對象)。
二、如何最小化重繪和回流
(1)重繪回流是什么?
簡單來說在JavaScript中,重繪(Repaint)和回流(Reflow)是瀏覽器執(zhí)行頁面布局和繪制的關(guān)鍵概念。它們是瀏覽器渲染引擎執(zhí)行頁面更新的步驟,對于性能和頁面渲染速度的優(yōu)化是非常重要的。
- 重繪(Repaint):重繪指的是當(dāng)元素的外觀樣式(如顏色、背景、邊框等)發(fā)生改變,但并沒有影響其布局的時候,瀏覽器會重新繪制(重繪)該元素。重繪過程并不會改變元素的幾何信息(大小、位置等),只是重新渲染元素的外觀。
- 回流(Reflow):回流指的是當(dāng)頁面布局或幾何信息發(fā)生改變,導(dǎo)致瀏覽器重新計算元素的布局和幾何屬性的過程?;亓鲿婕暗秸麄€頁面或部分頁面的重新測量、計算和重新布局。
回流的操作是比較耗費性能的,因為它需要瀏覽器重新計算元素的位置、大小和幾何屬性,有時候還會觸發(fā)其他元素的重新布局。而重繪則相對較快,因為它只是重新繪制元素的外觀而不需要重新計算布局信息,因此通過合理的使用和避免不必要的回流和重繪,可以提高頁面的性能和渲染速度,優(yōu)化用戶的體驗。
(2)如何最小化重繪與回流?
- 需要要對元素進行復(fù)雜的操作時,可以先隱藏display:none),操作完成后再顯示。
- 需要創(chuàng)建多個DOM節(jié)點時,使用DocumentFragmentt創(chuàng)建完后一次性的加入document。
- 緩存Layout屬性值,如:var left=elem.offsetLeft:這樣,多次使用Iet只產(chǎn)生一次回流。
- 盡量避免用table布局(table元素一旦觸發(fā)回流就會導(dǎo)致table里所有的其它元素回流)。
三、Javascriptf作用鏈域?
(1)作用域是什么?
作用域指的是在JavaScript中,變量在代碼中可訪問的范圍。它決定了在何處以及如何查找和訪問變量。
JavaScript中有三種主要類型的作用域:
- 全局作用域(Global Scope):全局作用域是在整個 JavaScript 程序中都可訪問的作用域。在全局作用域中聲明的變量和函數(shù)可以被項目中的任何部分訪問。
- 函數(shù)作用域(Function Scope):函數(shù)作用域是在函數(shù)內(nèi)部聲明的變量所擁有的作用域。這意味著在函數(shù)外部無法訪問函數(shù)內(nèi)部聲明的變量。每當(dāng)創(chuàng)建一個函數(shù)時,就會創(chuàng)建一個新的函數(shù)作用域。
- 塊級作用域(Block Scope):塊級作用域是在代碼塊(通常是由花括號?
{}
?包裹的代碼)內(nèi)部聲明的變量所擁有的作用域。在ES6之前,JavaScript中并沒有塊級作用域,變量的作用域只限于函數(shù)作用域和全局作用域。但是,通過使用?let
?和?const
?關(guān)鍵字,我們可以在if語句、循環(huán)等代碼塊中創(chuàng)建塊級作用域。
需要注意的是:ES6引入了?let
?和?const
?關(guān)鍵字,它們具有塊級作用域。而?var
?關(guān)鍵字則具有函數(shù)作用域,但在沒有塊級作用域的情況下,它也可以用于在整個函數(shù)作用域中聲明變量。因此,在編寫 JavaScript 代碼時,了解作用域是非常重要的,以避免變量沖突和不正確的訪問。
(2)作用域鏈?zhǔn)鞘裁矗?/p>
作用域鏈(Scope Chain)是 JavaScript 中一種機制,用于解析變量的引用和查找變量的值。它是由多個嵌套的作用域形成的鏈?zhǔn)浇Y(jié)構(gòu)。
當(dāng)在函數(shù)內(nèi)部訪問一個變量時,JavaScript 引擎首先會在當(dāng)前函數(shù)的作用域中查找該變量。如果找到了變量,則直接使用該變量。如果在當(dāng)前作用域中沒有找到該變量,則會向上繼續(xù)查找,進入上一層作用域,直到找到該變量或到達全局作用域為止。
這種層層嵌套的作用域鏈關(guān)系就是作用域鏈。作用域鏈的構(gòu)建是在函數(shù)創(chuàng)建的時候確定的,并且在函數(shù)執(zhí)行期間不會改變。