国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

2022前端面試題匯總(持續(xù)更新中~)

這篇具有很好參考價值的文章主要介紹了2022前端面試題匯總(持續(xù)更新中~)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

1. 防抖和節(jié)流

2. js閉包

vue中的data為什么是一個函數(shù)?(面試常問)

3. ES6面試題

3.1 var let const 區(qū)別

3.2?解構(gòu)?

3.3?如何利用es6快速的去重?

3.4?Promise?面試題?以下代碼的執(zhí)行結(jié)果是?

4.?Vue相關(guān)

4.1?MVC和MVVM的區(qū)別

4.2?v-model?原理

4.3? vue中的data為什么是一個函數(shù)?(面試常問)

4.4?v-if?和?v-show的區(qū)別

4.5?v-for中為什么要有key

5.?跨域的解決方法

5.1.?webpack?里的proxy

5.2. jsonp (需要后端支持 )

5.3.?webpack?plugin (插件)

5.4.?cors (后端解決)

6.git命令

7.get與post請求有什么區(qū)別

8.?cookie、localStorage、sessionStorage的區(qū)別?

9.?async?和?await?的區(qū)別

10.?setTimeout?時間為0,?以及誤差的原因

11.?求數(shù)組的最大值?

12.?求數(shù)組的最小值?

13.?數(shù)組去重?

14.?生成從0?到?指定數(shù)字的數(shù)組?

15.?數(shù)組求和

16.?js的數(shù)據(jù)類型

17.?js的變量提升

?18.?this指向

19.?map和forEach的區(qū)別

20.?箭頭函數(shù)和普通函數(shù)的區(qū)別?

21. es6新增

22.?數(shù)組方法匯總

23.?項(xiàng)目性能優(yōu)化方案


1. 防抖和節(jié)流

防抖:單位時間內(nèi),頻繁觸發(fā)事件,只執(zhí)行最后一次。
比如點(diǎn)擊按鈕,2秒后調(diào)用函數(shù),結(jié)果在1.5秒的時候又點(diǎn)了,則會重新計(jì)算2秒后在調(diào)用函數(shù)。

應(yīng)用場景:搜索框、輸入框

思路:利用定時器,每次觸發(fā)先清除定時器()

節(jié)流:單位時間內(nèi),頻繁觸發(fā)事件,只執(zhí)行一次

應(yīng)用場景比較多的是:快速點(diǎn)擊、鼠標(biāo)滑動、scroll事件、下拉刷新
思路:利用定時器,等定時器結(jié)束再開啟定時器

2. js閉包

什么是閉包:閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)

function a() {

? ? ? ? let a1 = 1;

? ? ? ? return function() {

? ? ? ? ? ? ? ? return a1

????????}

}

閉包存在意義:

可以延長變量的生命周期4可以創(chuàng)建私有的環(huán)境

閉包好處:

可以讀取其他函數(shù)的內(nèi)部變量

將變量始終保存在內(nèi)存中

可以封裝對象的私有屬性和方法

壞處:消耗內(nèi)存、使用不當(dāng)會造成內(nèi)存溢出問題

vue中的data為什么是一個函數(shù)?(面試常問)

Vue 中的 data 必須是個函數(shù),因?yàn)楫?dāng) data 是函數(shù)時,組件實(shí)例化的時候這個函數(shù)將會被調(diào)用,返回一個對象,計(jì)算機(jī)會給這個對象分配一個內(nèi)存地址,實(shí)例化幾次就分配幾個內(nèi)存地址,他們的地址都不一樣,所以每個組件中的數(shù)據(jù)不會相互干擾,改變其中一個組件的狀態(tài),其它組件不變。

簡單來說,就是為了保證組件的獨(dú)立性和可復(fù)用性,如果 data 是個函數(shù)的話,每復(fù)用一次組件就會返回新的 data,類似于給每個組件實(shí)例創(chuàng)建一個私有的數(shù)據(jù)空間,保護(hù)各自的數(shù)據(jù)互不影響

3. ES6面試題

3.1 var let const 區(qū)別

var: 存在變量提升;存在變量覆蓋,已經(jīng)被定義且賦值的變量,如果再次被賦值,則以后一次值為準(zhǔn);沒有塊級作用域;

const:定義的是常量,聲明之后必須賦值;定義的值不能去修改,否則報錯;有塊級作用域;不存在變量提升和變量覆蓋;對于數(shù)組和對象的元素修改,不算做對常量的修改,不會報錯。

let: 有塊級作用域;不存在變量提升和變量覆蓋;let不允許在相同的作用域中重復(fù)聲明,注意是相同作用域,不同作用域重復(fù)聲明不會報錯

3.2?解構(gòu)賦值?

let a = 1; let b = 2;? 如果在不聲明第三個變量的前提下,使a=2, b=1?

答案:[a, b] = [b, a]

3.3?如何利用es6快速的去重?

let?arr = [23, 12, 13, 33, 22, 12, 21]

let item = [...new Set(arr)]

3.4?Promise?面試題?以下代碼的執(zhí)行結(jié)果是?

const promise = new Promise((resolve, reject) => {

? ? ? ? console.log(1)

????????resolve()

????????console.log(2)

})

promise.then(() => {

? ? ? ? console.log(3)

})

console.log(4)

答案:1,2,4,3

解釋:以上考察的是關(guān)于promise的原理,promise的構(gòu)造函數(shù)是同步執(zhí)行的,當(dāng)new?Promise的一瞬間,1,2?就立刻被執(zhí)行,而 .then方法是異步執(zhí)行的,當(dāng)執(zhí)行完1和2之后,會執(zhí)行輸出4,最后執(zhí)行輸出3

4.?Vue相關(guān)

4.1?MVC和MVVM的區(qū)別

MVC:M(model數(shù)據(jù))、V(view視圖),C(controlle控制器)缺點(diǎn)是前后端無法獨(dú)立開發(fā),必須等后端接口做好了才可以往下走;前端沒有自己的數(shù)據(jù)中心,太過依賴后臺

MVVM:M(model數(shù)據(jù))、V(view視圖)、VM(viewModel控制數(shù)據(jù)的改變和控制視圖)
html部分相當(dāng)于View層,可以看到這里的View通過通過模板語法來聲明式的將數(shù)據(jù)渲染進(jìn)DOM元素,當(dāng)ViewModel對Model進(jìn)行更新時,通過數(shù)據(jù)綁定更新到View。 Vue實(shí)例中的data相當(dāng)于Model層,而ViewModel層的核心是Vue中的雙向數(shù)據(jù)綁定,即Model變化時VIew可以實(shí)時更新,View變化也能讓Model發(fā)生變化

MVVM與MVC最大的區(qū)別就是:它實(shí)現(xiàn)了View和Model的自動同步,也就是當(dāng)Model的屬性改變時,我們不用再自己手動操作Dom元素,來改變View的顯示,而是改變屬性后該屬性對應(yīng)View層顯示會自動改變

4.2?v-model?原理

是采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在數(shù)據(jù)變動時發(fā)布消息給訂閱者,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)從而達(dá)到數(shù)據(jù)和視圖同步。

4.3? vue中的data為什么是一個函數(shù)?(面試常問)

實(shí)際上就是一個閉包,因?yàn)関ue是單頁面應(yīng)用,是由很多組件構(gòu)成,每一個組件中都有一個data,所以通過閉包給每一個組件創(chuàng)建了一個私有的作用域,這樣就不會相互影響。

4.4?v-if?和?v-show的區(qū)別

v-if是通過添加和刪除元素來進(jìn)行顯示或者隱藏

v-show是通過操作DOM修改display樣式來修改元素的顯示和隱藏

如果需要頻繁的進(jìn)行元素的顯示和隱藏使用v-show性能更好

4.5?v-for中為什么要有key

key?可以提高虛擬DOM的更新效率。

在vue中,默認(rèn)“就地復(fù)用”的策略,在DOM操作的時候,如果沒有key?就會造成選項(xiàng)錯亂

key?只能是字符串或者number,其他類型不可以

1.?虛擬DOM中key的作用:

key是虛擬DOM對象的標(biāo)識,當(dāng)數(shù)據(jù)發(fā)生變化時,Vue會根據(jù)【新數(shù)據(jù)】生成【新的虛擬DOM】,隨后Vue進(jìn)行【新的虛擬DOM】與【舊的虛擬DOM】差異比較比較規(guī)則如下:

2.?比較規(guī)則:

1)舊虛擬DOM找到了與新虛擬DOM相同的key:

若虛擬DOM中內(nèi)容沒變,直接使用之前的真實(shí)DOM

若虛擬DOM中內(nèi)容變了,則生成新的真實(shí)DOM,隨后替換掉頁面中之前的真實(shí)DOM

3.?用index作為key可能會引發(fā)的問題:

1)若對數(shù)據(jù)進(jìn)行:逆序添加、逆序刪除等破壞順序的操作,會產(chǎn)生沒有必要的真實(shí)DOM更新==>界面效果沒問題,但效率低

2)如果結(jié)構(gòu)中還包含輸入類的DOM,會產(chǎn)生錯誤的DOM更新 ==>?界面有問題

4.6?打包后?dist?目錄過大,解決辦法?

1.?dist打包生成的文件中有 .map?文件,可以刪除。在?vue.config.js文件中配置:productionSourceMap: false

2.?組價和路由使用懶加載、按需引入等

3.?對于文件和圖片進(jìn)行壓縮。?安裝壓縮組件:?compression-webpack-plugin

安裝后進(jìn)行導(dǎo)入配置:?

最小化代碼 minisize: true

分割代碼: splitChunksl

超過限定值的文件進(jìn)行壓縮,threshold:?文件大?。ㄗ止?jié)為單位)

4.7?watch和computed的區(qū)別

computed能完成的功能,watch都可以完成

watch能完成的小功能,computed不一定能完成。例如:watch可以進(jìn)行異步操作

兩個重要小原則:

1.所有被vue管理的函數(shù),最好寫成普通函數(shù),這樣this的指向才是vm或組件實(shí)例對象

2.?所有不被vue管理的函數(shù)(定時器的回調(diào)、ajax的回調(diào)、promise的回調(diào)等),最好寫成箭頭函數(shù),這樣this的指向才是vm或組件實(shí)例對象

4.8?vue組件之間的數(shù)據(jù)傳遞

1.?父組件給子組件傳遞數(shù)據(jù)

通過給子組件身上綁定自定義屬性,然后再子組件里使用props屬性來接收即可

2022前端面試題匯總(持續(xù)更新中~)

2.?子組件給父組件傳遞數(shù)據(jù)

1)第一種方式:通過父組件給子組件傳遞函數(shù)類型的props實(shí)現(xiàn):子組件給父組件傳遞數(shù)據(jù)

父組件:

2022前端面試題匯總(持續(xù)更新中~)

?2022前端面試題匯總(持續(xù)更新中~)

?子組件:

?2022前端面試題匯總(持續(xù)更新中~)

2)第二種方式:通過父組件給子組件綁定一個自定義事件實(shí)現(xiàn):子組件給父組件傳遞數(shù)據(jù)

?父組件:

2022前端面試題匯總(持續(xù)更新中~)

?2022前端面試題匯總(持續(xù)更新中~)

?子組件:

2022前端面試題匯總(持續(xù)更新中~)

3)第三種方式:通過父組件給子組件綁定一個自定義事件實(shí)現(xiàn):使用ref實(shí)現(xiàn)

?父組件:

2022前端面試題匯總(持續(xù)更新中~)

?2022前端面試題匯總(持續(xù)更新中~)

?子組件:

?2022前端面試題匯總(持續(xù)更新中~)

3.?全局事件總線:可以實(shí)現(xiàn)任意組件間的數(shù)據(jù)傳遞?

main.js:將全局事件bus,掛載到Vue的原型上,這樣所有的組件都可以使用

2022前端面試題匯總(持續(xù)更新中~)

?兄弟組件A:

2022前端面試題匯總(持續(xù)更新中~)?兄弟組件B:

2022前端面試題匯總(持續(xù)更新中~)

4.?消息訂閱與發(fā)布

一種組件間的通信方式,適用于任意組件間通信。

使用步驟:

1)安裝pubsub: npm i pubsub-js

2)?引入:?import pubsub from 'pubsub-js'

3)?接收數(shù)據(jù):?A組件想要接收數(shù)據(jù),則在A組件中訂閱消息,訂閱的回調(diào)留在A組件自身

mounted() {

? ? ? ? this.pid = punsub.subscribe('xxx', (data)=>{

? ? ? ? ? ? ? ? ......

????????})

}

4)?提供數(shù)據(jù):?pubsub.publish('xxx',?數(shù)據(jù))

5)最好在beforeDestory鉤子中,用pubsub.unsubscribe(pid)取消訂閱

5.?跨域的解決方法

跨域:只要協(xié)議、域名和端口號有一個不相同就會產(chǎn)生跨域問題。同源策略是一個安全策略。同源,指的是協(xié)議,域名,端口相同。瀏覽器處于安全方面的考慮,只允許本域名下的接口交互,不同源的客戶端腳本,在沒有明確授權(quán)的情況下,不能讀寫對方的資源。

解決辦法:

5.1.?webpack?里的proxy

devServer: {
? ? proxy: { ?//配置跨域
? ? ? '/api': {
? ? ? ? target: 'http://121.121.67.254:8185/', ?//這里后臺的地址模擬的;應(yīng)該填寫你們真實(shí)的后臺接口
? ? ? ? changOrigin: true, ?//用于控制請求頭中的post值,默認(rèn)開啟
? ? ? ? pathRewrite: {
? ? ? ? ? /* 重寫路徑,當(dāng)我們在瀏覽器中看到請求的地址為:http://localhost:8080/api/core/getData/userInfo 時
? ? ? ? ? ? 實(shí)際上訪問的地址是:http://121.121.67.254:8185/core/getData/userInfo,因?yàn)橹貙懥?/api
? ? ? ? ? ?*/
? ? ? ? ? '^/api': ''?
? ? ? ? }
? ? ? },
? ? }
? }

5.2. jsonp (需要后端支持 )

方案1 *:通配符,全部允許,存在安全隱患(不推薦)。

一旦啟用本方法,表示任何域名皆可直接跨域請求:
? 1 ? ? server {
? 2 ? ? ? ? ...
? 3 ? ? ? ? location / {
? 4 ? ? ? ? ? ? # 允許 所有頭部 所有域 所有方法
? 5 ? ? ? ? ? ? add_header 'Access-Control-Allow-Origin' '*';
? 6 ? ? ? ? ? ? add_header 'Access-Control-Allow-Headers' '*';
? 7 ? ? ? ? ? ? add_header 'Access-Control-Allow-Methods' '*';
? 8 ? ? ? ? ? ? # OPTIONS 直接返回204
? 9 ? ? ? ? ? ? if ($request_method = 'OPTIONS') {
?10 ? ? ? ? ? ? ? ? return 204;
?11 ? ? ? ? ? ? }
?12 ? ? ? ? }
?13 ? ? ? ? ...
?14 ? ? }

方案2:多域名配置(推薦)

配置多個域名在map中 只有配置過的允許跨域:

? 1 ?map $http_origin $corsHost {
? 2 ? ? ? ? default 0;
? 3 ? ? ? ? "~https://zzzmh.cn" https://zzzmh.cn;
? 4 ? ? ? ? "~https://chrome.zzzmh.cn" https://chrome.zzzmh.cn;
? 5 ? ? ? ? "~https://bz.zzzmh.cn" https://bz.zzzmh.cn;
? 6 ? ? }
? 7 ? ? server {
? 8 ? ? ? ? ...
? 9 ? ? ? ? location / {
?10 ? ? ? ? ? ? # 允許 所有頭部 所有$corsHost域 所有方法
?11 ? ? ? ? ? ? add_header 'Access-Control-Allow-Origin' $corsHost;
?12 ? ? ? ? ? ? add_header 'Access-Control-Allow-Headers' '*';
?13 ? ? ? ? ? ? add_header 'Access-Control-Allow-Methods' '*';
?14 ? ? ? ? ? ? # OPTIONS 直接返回204
?15 ? ? ? ? ? ? if ($request_method = 'OPTIONS') {
?16 ? ? ? ? ? ? ? ? return 204;
?17 ? ? ? ? ? ? }
?18 ? ? ? ? }
?19 ? ? ? ? ...
?20 ? ? }

5.3.?webpack?plugin (插件)

npm i -S webpack-dev-middleware? 安裝中間鍵,把前端和后端的服務(wù)綁在一起

中間件

let webpack = require('webpack')

let middle = require('webpack-dev-middleware')

let compiler = webpack(require('./webpack.config.js'))

app.use(middle(compiler))

5.4.?cors (后端解決)

var allowCrossDomain = function(req,res,next) {

? ? ? ? // 請求源

? ? ? ? res.header("Access-Control-Allow-Origin", "*")

? ? ? ? //?請求頭?token

????????res.header("Access-Control-Allow-Headers", "*")

? ? ? ? //?請求方法?get?post?put?del

????????res.header("Access-Control-Allow-Methods", "*")

? ? ? ? next();

}

app.use(allowCrossDomain )

6.git命令

1. git init 初始化git倉庫 (mac中Command+Shift+. 可以顯示隱藏文件)

2. git status 查看文件狀態(tài)

3. git add 文件列表 追蹤文件

4. git commit -m 提交信息 向倉庫中提交代碼

5. git log 查看提交記錄

6.1.分支明細(xì)

(1)主分支(master):第一次向 git 倉庫中提交更新記錄時自動產(chǎn)生的一個分支。

(2)開發(fā)分支(develop):作為開發(fā)的分支,基于 master 分支創(chuàng)建。

(3)功能分支(feature):作為開發(fā)具體功能的分支,基于開發(fā)分支創(chuàng)建

6.2.分支命令

(1)git branch 查看分支

(2)git branch 分支名稱 創(chuàng)建分支

(3)git checkout 分支名稱 切換分支

(4)git merge 來源分支 合并分支 (備注:必須在master分支上才能合并develop分支)

(5)git branch -d 分支名稱 刪除分支(分支被合并后才允許刪除)(-D 強(qiáng)制刪除)

6.3.暫時保存更改

(1)存儲臨時改動:git stash

(2)恢復(fù)改動:git stash pop

7.get與post請求有什么區(qū)別

get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。

POST比GET安全,因?yàn)閿?shù)據(jù)在地址欄上不可見。

get方式提交的數(shù)據(jù)最多只能有1024字節(jié),而post則沒有此限制。

GET使用URL或Cookie傳參。而POST將數(shù)據(jù)放在request BODY中。

GET與POST都有自己的語義,不能隨便混用。

據(jù)研究,在網(wǎng)絡(luò)環(huán)境好的情況下,發(fā)一次包的時間和發(fā)兩次包的時間差別基,本可以無視。而在網(wǎng) 絡(luò)環(huán)境差的情況下,兩次包的TCP在驗(yàn)證數(shù)據(jù)包完整 性上,有非常大的優(yōu)點(diǎn)。post 發(fā)送兩次,get 只發(fā)送一次。

8.?cookie、localStorage、sessionStorage的區(qū)別?

共同點(diǎn): 都是保存在瀏覽器端、且同源的

不同點(diǎn):

cookie數(shù)據(jù)始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務(wù)器間來回傳遞。cookie數(shù)據(jù)還有路徑(path)的概念,可以限制cookie只屬于某個路徑下sessionStorage和localStorage不會自動把數(shù)據(jù)發(fā)送給服務(wù)器,僅在本地保存。

存儲大小限制也不同:

cookie數(shù)據(jù)不能超過4K,sessionStorage和localStorage可以達(dá)到5M

sessionStorage:僅在當(dāng)前瀏覽器窗口關(guān)閉之前有效;

localStorage:始終有效,窗口或?yàn)g覽器關(guān)閉也一直保存,本地存儲,因此用作持久數(shù)據(jù);

cookie:只在設(shè)置的cookie過期時間之前有效,即使窗口關(guān)閉或?yàn)g覽器關(guān)閉

作用域不同

sessionStorage:不在不同的瀏覽器窗口中共享,即使是同一個頁面;

localstorage:在所有同源窗口中都是共享的;也就是說只要瀏覽器不關(guān)閉,數(shù)據(jù)仍然存在

cookie: 也是在所有同源窗口中都是共享的.也就是說只要瀏覽器不關(guān)閉,數(shù)據(jù)仍然存在

9.?async?和?await?的區(qū)別

區(qū)別:

async是來定義函數(shù)的,定義異步函數(shù),打印函數(shù)名可以得到一個promise對象,言外之意可以通過這個? ?函數(shù)名稱.then?這個方法

await?后面跟的是任意表達(dá)式,一般使用promise的表達(dá)式

async?內(nèi)部實(shí)現(xiàn),又返回值?成功返回promise.resolve() ,出錯返回promise.reject()?返回值用catch捕獲

await?等待后面的promise對象執(zhí)行完畢,拿到了promise.resolve()的值之后,執(zhí)行后面的代碼。await后面的表達(dá)式,能是promise.reject(),所以建議await放在try....catch語句中

優(yōu)點(diǎn):async和await?屬于es7語法。編寫方便,提高程序效率,避免了回調(diào)地獄

補(bǔ)充:promise和async和await的區(qū)別

promise?es6語法,promise中包含catch,async需要自己定義catch

promise?提供的方法會多一些,all、race等方法,aync中是沒有的。

10.?setTimeout?時間為0,?以及誤差的原因

setTimeout,如果

時間為0,則會立即插入隊(duì)列,不是立即執(zhí)行,等待前面的代碼執(zhí)行完畢。

11.?求數(shù)組的最大值?

function getMaxArryNum(arr) {

? ? ? ? return Math.max(...arr)

}?

getMaxArryNum([1,2,3,4,5,6])

12.?求數(shù)組的最小值?

const?getMinArryNum= (arr) => {

? ? ? ? return Math.min(...arr)

}?

getMinArryNum([1,2,3,4,5,6])?

13.?數(shù)組去重?

const removeEqual = (arr) => {

? ? ? ? const result = arr.filter((item, index, self) => {

? ? ? ? ? ? ? ? return self.indexof(item) === index

????????})

????????return result

}?

removeEqual([1,2,3,4,5,6,1,2,3,42,1])

14.?生成從0?到?指定數(shù)字的數(shù)組?

const getArr = (startNum, endNum) => {

? ? ? ? let arr = []

? ? ? ? for(var i=startNum; i<=endNum; i++){

? ? ? ? ? ? ? ? arr.push(i)

????????}

? ? ? ? return arr

}?

getArr(0,4)

15.?數(shù)組求和

const?arrSum = (arr) => {

? ? ? ? const temp = arr.reduce((pre, now) => {

? ? ? ? ? ? ? ? return pre+now

????????},0)

? ? ? ? return temp

}

arrSum([1,2,3,4])

16.?js的數(shù)據(jù)類型

js?數(shù)據(jù)類型分為基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型

基本數(shù)據(jù)類型:Boolean、Number、String、Null、Undefined

復(fù)雜數(shù)據(jù)類型:?Object、Array、Function、Date

17.?js的變量提升

在js中,變量和函數(shù)的聲明會被提升到最頂部執(zhí)行

函數(shù)提升高于變量的提升

函數(shù)內(nèi)部如果用var聲明了相同名稱的外部變量,函數(shù)將不再向上尋找

匿名函數(shù)不會提升

?18.?this指向

this總是指向函數(shù)的直接調(diào)用者。

如果有new關(guān)鍵字,this指向new出來的對象

在事件中,this指向觸發(fā)這個事件的對象

19.?map和forEach的區(qū)別

forEach方法,是最基本的方法,遍歷和循環(huán)。默認(rèn)有3個參數(shù):分別是遍歷的每一個元素item,遍歷的索引index,遍歷的數(shù)組array

map方法,和foreach一致,不同的是會返回一個新的數(shù)組,所以callback需要有return返回值,如果沒有會返回undefined

20.?箭頭函數(shù)和普通函數(shù)的區(qū)別?

函數(shù)體內(nèi)的this對象,就是定義時所在的對象,而不是使用時所在的對象

不可以當(dāng)作構(gòu)造函數(shù),也就是說不可以使用new命令,否則會報錯

不可以使用arguments對象,該對象在函數(shù)體內(nèi)不存在,如果要用可以使用Rest參數(shù)代替

不可以使用yield命令,因此箭頭函數(shù)不能用作Generator函數(shù)

21. es6新增

新增模版字符串

箭頭函數(shù)

增加let、const來聲明變量

for-of用來遍歷數(shù)據(jù)-例如數(shù)組中的值

解構(gòu)賦值

新增簡單數(shù)據(jù)類型Symbol,獨(dú)一無二的,不會與其他屬性名沖突

將Promise對象納入規(guī)范,提供了原生的Promise對象

22.?數(shù)組方法匯總

map?循環(huán)遍歷數(shù)組、返回一個新的數(shù)組

forEach?循環(huán)遍歷數(shù)組,不改變原數(shù)組

push/pop?在數(shù)組的末尾添加/刪除元素? 改變原數(shù)組

unshift/ shift?在數(shù)組的頭部添加/刪除元素,改變原數(shù)組

join? 把數(shù)組轉(zhuǎn)化為字符串

some? 有一項(xiàng)返回為true,則整體為true

every? 有一項(xiàng)返回為true,則整體為false

filter?數(shù)組過濾

slice(start, end)? 數(shù)組截取,包括開頭,不包括截取,返回一個新的數(shù)組

splice(start, number, value)? 刪除數(shù)組元素,改變原數(shù)組

indexof/lastindexof:?查找數(shù)組項(xiàng),返回對應(yīng)的下標(biāo)

concat:數(shù)組的拼接,不影響原數(shù)組,淺拷貝

sort:數(shù)組排序?改變原數(shù)組

reverse:?數(shù)組反轉(zhuǎn),改變原數(shù)組

23.?項(xiàng)目性能優(yōu)化方案

減少http請求

減少DNS查詢

使用CDN

避免重定向

圖片懶加載

路由懶加載

減少DOM元素操作

使用外部js和css

壓縮js、css、字體、圖片等

使用iconfont字體圖標(biāo)、雪碧圖等

避免圖片的src為空

把樣式表放在link中

把js放在頁面的底部文章來源地址http://www.zghlxwxcb.cn/news/detail-403692.html

到了這里,關(guān)于2022前端面試題匯總(持續(xù)更新中~)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • VSCode前端必備插件2022版(持續(xù)更新)

    VSCode前端必備插件2022版(持續(xù)更新)

    VSCode作為我們前端主流的開發(fā)工具,優(yōu)勢自然在于它的擴(kuò)展插件,可以有效地提高開發(fā)效率和團(tuán)隊(duì)協(xié)作,本文提高的都是UP主親測,最底下貼入我的vscode設(shè)置,如果有發(fā)現(xiàn)不錯的插件,小伙伴們也可以私信UP主,覺得UP主推薦的不錯的小伙伴們,請多多支持!話不多說直接上。

    2023年04月26日
    瀏覽(26)
  • React2023年面試題匯總~~~~持續(xù)更新中?。。?!

    這里總結(jié)的所有面試題都是從??途W(wǎng)找的各種大廠真實(shí)場景的面試題,并且做了匯總,各位看官看后做好總結(jié),絕對可以應(yīng)對88.8%React相關(guān)的面試題。 useState() : 允許在函數(shù)組件中使用狀態(tài)。使用useState() 聲明一個狀態(tài)變量,并使用它來 存儲組件的狀態(tài) 。每次更改狀態(tài)時,組件

    2024年02月09日
    瀏覽(31)
  • Java集合面試題匯總【附答案】持續(xù)更新

    1:HashMap 的數(shù)據(jù)結(jié)構(gòu)? A:哈希表結(jié)構(gòu)(鏈表散列:數(shù)組+鏈表)實(shí)現(xiàn),結(jié)合數(shù)組和鏈表的優(yōu)點(diǎn)。當(dāng)鏈表長度超過 8 時,鏈表轉(zhuǎn)換為紅黑樹。 transient NodeK,V[] table; 2:HashMap 的工作原理? HashMap 底層是 hash 數(shù)組和單向鏈表實(shí)現(xiàn),數(shù)組中的每個元素都是鏈表,由 Node 內(nèi)部類(實(shí)現(xiàn)

    2024年02月12日
    瀏覽(53)
  • 前端面試題(持續(xù)更新~~)

    前端面試題(持續(xù)更新~~)

    1、concat() 方法用于合并兩個或多個數(shù)組。此方法不會更改現(xiàn)有數(shù)組,而是返回一個新數(shù)組。 2、find() 方法返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個元素的值。否則返回 undefined 。 語法: 數(shù)組名.find(function (item,index,arr) {}) item : 這個表示的是數(shù)組中的每一項(xiàng) index : 這個表示的是

    2024年01月20日
    瀏覽(18)
  • 2023前端面試題合集(附答案)持續(xù)更新中...

    2023前端面試題合集(附答案)持續(xù)更新中...

    (1).什么是原型鏈 答:原型鏈就是每個對象擁有一個原型對象,對象以其原型為模板、從原型繼承方法和屬性。原型對象也可能擁有原型,并從中繼承方法和屬性,一層一層、以此類推。這種關(guān)系就被稱為原型鏈。 簡單理解:原型鏈就是在當(dāng)前對象中找不到定義的話,會在當(dāng)前

    2024年02月07日
    瀏覽(26)
  • 前端vue常見60道面試題 重點(diǎn)簡潔!?。 疚赐?,文章持續(xù)更新中......】

    model 代表數(shù)據(jù)模型,數(shù)據(jù)和業(yè)務(wù)邏輯都在 model 層中定義 view 代表視圖,負(fù)責(zé)數(shù)據(jù)展示 view model 代表與界面對應(yīng)的 model MVVM 是 MVC 的變種進(jìn)階,在概念上真正將頁面與數(shù)據(jù)邏輯分離的模式,把數(shù)據(jù)綁定放到一個 js 中去實(shí)現(xiàn),這個 js 文件主要功能是完成數(shù)據(jù)的雙向綁定,把 mod

    2024年02月06日
    瀏覽(21)
  • 【前端vue3面試題】2023最新面試實(shí)錄vue3.0,高頻10問(持續(xù)更新...)

    前端vue3面試題 2023最新面試實(shí)錄vue3.0,高頻10問(持續(xù)更新…) 1問: vue3和vue2有哪些不同? 響應(yīng)式系統(tǒng)的重構(gòu),使用proxy替換Object.defineProperty屬性,優(yōu)勢: Proxy可直接監(jiān)聽 對象 添加/刪除 屬性; Proxy直接監(jiān)聽 數(shù)組的變化 Proxy監(jiān)聽的目標(biāo)是對象本身,不需要像Object.defineProperty那樣遍

    2023年04月14日
    瀏覽(33)
  • Unity常見面試題詳解(持續(xù)更新...)

    Unity常見面試題詳解(持續(xù)更新...)

    1、首先我們來討論在C/C++中的聲明和定義.. 1) 我們先從函數(shù)聲明和定義說起... 一般我們在C++里都會先定義一個函數(shù),然后再M(fèi)ain函數(shù)前將函數(shù)聲明,比如: 聲明就是告訴編譯器,咱這兒有一個名字叫Add,返回值和參數(shù)需要int的函數(shù),就給你說一聲 定義就是在內(nèi)存中拓展出了這

    2024年02月09日
    瀏覽(15)
  • 持續(xù)不斷更新中... 自己整理的一些前端知識點(diǎn)以及前端面試題,包括vue2,vue3,js,ts,css,微信小程序等

    答: 在普通的前端項(xiàng)目工程中,在script標(biāo)簽中增加setup即可使用api 使用setup()鉤子函數(shù) 答: 不要在計(jì)算屬性中進(jìn)行異步請求或者更改DOM 不要直接修改computed的值 區(qū)別: 計(jì)算屬性值基于其響應(yīng)式依賴被緩存,意思就是只要他之前的依賴不發(fā)生變化,那么調(diào)用他只會返回之前緩

    2024年02月11日
    瀏覽(58)
  • 嵌入式工程師常見面試題(持續(xù)更新版本)

    嵌入式工程師常見面試題(持續(xù)更新版本)

    前言: 鄙人于學(xué)堂求學(xué)十余載,終是要踏足江湖求一寸安身處!以前都忙著學(xué)習(xí)新東西以及做項(xiàng)目,現(xiàn)如今也需要面對找工作的壓力。此篇博客是作者準(zhǔn)備的嵌入式工程師常見的面試題目匯總, 其答案包含網(wǎng)絡(luò)搜索和作者自己感悟總結(jié)的 ,可能存在問題, 如有大的紕漏希望

    2024年02月08日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包