在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)