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