javascript最新2020經(jīng)典面試題
let 和 var
(a): let 聲明的變量只在 let 命令所在的代碼塊內(nèi)有效
(b): let 是在代碼塊內(nèi)有效,var 是在全局范圍內(nèi)有效:
(c): let 不存在變量提升,var 會(huì)變量提升:
for (var i = 0; i < 10; i++) { setTimeout(function(){ console.log(i); }) } // 輸出十個(gè) 10 for (let j = 0; j < 10; j++) { setTimeout(function(){ console.log(j); }) } // 輸出 0123456789
解析:
變量 i 是用 var 聲明的,在全局范圍內(nèi)有效,所以全局中只有一個(gè)變量 i, 每次循環(huán)時(shí),setTimeout 定時(shí)器里面的 i 指的是全局變量 i ,而循環(huán)里的十個(gè) setTimeout 是在循環(huán)結(jié)束后才執(zhí)行,所以此時(shí)的 i 都是 10。
變量 j 是用 let 聲明的,當(dāng)前的 j 只在本輪循環(huán)中有效,每次循環(huán)的 j 其實(shí)都是一個(gè)新的變量,所以 setTimeout 定時(shí)器里面的 j 其實(shí)是不同的變量,即最后輸出 12345。(若每次循環(huán)的變量 j 都是重新聲明的,如何知道前一個(gè)循環(huán)的值?這是因?yàn)?JavaScript 引擎內(nèi)部會(huì)記住前一個(gè)循環(huán)的值)。
以上就是javascript最新2020經(jīng)典面試題的詳細(xì)內(nèi)容,更多關(guān)于javascript常見(jiàn)面試題請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring IOC簡(jiǎn)單理解及創(chuàng)建對(duì)象的方式
這篇文章主要介紹了Spring IOC簡(jiǎn)單理解及創(chuàng)建對(duì)象的方式,本文通過(guò)兩種方式給大家介紹創(chuàng)建對(duì)象的方法,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09Java實(shí)現(xiàn)批量導(dǎo)出導(dǎo)入數(shù)據(jù)及附件文件zip包
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)批量導(dǎo)出導(dǎo)入數(shù)據(jù)及附件文件zip包的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一2022-09-09Spring實(shí)現(xiàn)上拉刷新和下拉加載效果
這篇文章主要為大家詳細(xì)介紹了Spring實(shí)現(xiàn)上拉刷新和下拉加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12MyBatis-Plus中如何實(shí)現(xiàn)動(dòng)態(tài)表名
這篇文章主要介紹了MyBatis-Plus中如何實(shí)現(xiàn)動(dòng)態(tài)表名問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Spring?AOP實(shí)現(xiàn)用戶登錄統(tǒng)一驗(yàn)證功能
這篇文章主要為大家詳細(xì)介紹了Spring?AOP如何實(shí)現(xiàn)用戶登錄統(tǒng)一驗(yàn)證功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)具有一定的借鑒價(jià)值,需要的可以參考一下2023-01-01Java優(yōu)化for循環(huán)嵌套的高效率方法
這篇文章主要介紹了Java優(yōu)化for循環(huán)嵌套的高效率方法,幫助大家更好的提升java程序性能,感興趣的朋友可以了解下2020-09-09Spring boot開(kāi)發(fā)web應(yīng)用JPA過(guò)程解析
這篇文章主要介紹了Spring boot開(kāi)發(fā)web應(yīng)用JPA過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09