(function(){
for(var i = 0; i < 5; i++) {}
console.log(i) // i = 5
})()
第一個問題:請問這屬於js的哪一部分知識內容?
第二個問題:通俗地解釋下為什麼i會等於5?
0o0
PHP中文网2017-06-12 09:31:37
這個問題是閉包嗎? 我覺得併不是閉包,並沒有函數的嵌套. 它就是一個 函數本地變量 和 匿名函數 的問題.
創建一個匿名函數並立即執行並沒有涉及閉包吧. 只是循環結束, i
的值變成5
退出循環, console.log(i)
打印當前的i
, 即5.
這與以下是等同的:
var test = function() {
for(var i = 0; i < 5; i++) {}
console.log(i) // i = 5
}
test();
伊谢尔伦2017-06-12 09:31:37
在JavaScript中是沒有區塊級作用域這麼一說的,所以for循環{}以及if語句{}內部的變量,在外部是可以存取的。
作用域分為全域作用域和局部作用域
全域作用域是當你建立一個文件的時候,系統為你內建的。
局部作用域是透過建立一個函數來實現的。