對於for循環中使用let或var時,i的作用域范圍的記錄


在for循環中使用let時,結果如下

 

for內部定義的i在循環結束后不會覆蓋外部的i

 

 

 

在for循環中使用var,且不控制i的作用域時,結果如下

 

 

第一個for循環內部定義的i並不會創建,而是直接使用外部中的i,故在循環結束時外部的i變為了5。

第二個for循環直接使用了外部的i

 

 

 

把第一個for循環存於匿名函數中,第二個for循環使用var創建變量i,結果如下

 

 

第一個for循環置於匿名函數,會創建一個在作用域在匿名函數的i,第二個for循環並未創建i而是直接對外部的i進行賦值

 

在for循環中使用var創建變量,結果如下

內部使用var創建的變量可以在for循環外部獲取,而i不可獲取

 

在for循環中使用let創建變量,結果如下

在for循環內部使用let創建變量時,for循環外部不能獲取該變量。

哪怕在let定義的代碼塊中,使用var創建變量還是會讓該變量存在於全局或整個函數塊中。

 

-----------------------------------------------------分割線-------------------------------------------
跑去看了看var的定義范圍,我為什么要測試這個啊,明明寫的很明白。

“let允許你聲明一個作用域被限制在塊級中的變量、語句或者表達式。

var聲明的變量只能是全局或者整個函數塊的。”--------------來自MDN的let頁面(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/let)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM