javascript - 關於i值為什麼等於5的問題
欧阳克
欧阳克 2017-06-12 09:29:37
0
8
941
(function(){
    for(var i = 0; i < 5; i++) {}
    console.log(i) // i = 5
})()

第一個問題:請問這屬於js的哪一部分知識內容?
第二個問題:通俗地解釋下為什麼i會等於5?
0o0

欧阳克
欧阳克

温故而知新,可以为师矣。 博客:www.ouyangke.com

全部回覆(8)
Ty80

這個問題是閉包嗎? 我覺得併不是閉包,並沒有函數的嵌套. 它就是一個 函數本地變量匿名函數 的問題.

創建一個匿名函數並立即執行並沒有涉及閉包吧. 只是循環結束, i 的值變成5 退出循環, console.log(i)打印當前的i, 即5.

這與以下是等同的:

var test = function() {
    for(var i = 0; i < 5; i++) {}
    console.log(i) // i = 5
}
test();
扔个三星炸死你

這不屬於閉包,只是for的循環速度後印了一下值而已

刘奇

這是個 js 沒有區塊級作用域的問題,只有函數作用域導致的問題。 。 。居能直接扯上閉包。 。 。我服。 。 。

伊谢尔伦

在JavaScript中是沒有區塊級作用域這麼一說的,所以for循環{}以及if語句{}內部的變量,在外部是可以存取的。

作用域分為全域作用域和局部作用域

全域作用域是當你建立一個文件的時候,系統為你內建的。
局部作用域是透過建立一個函數來實現的。

刘奇
  • 這個一般都出現在考察閉包的問題中

  • i + 1 循環了5次,所以 i 是 5

左手右手慢动作
  1. 你應該想了解js中的閉包部分問題

  2. 因為執行console.log時for迴圈執行完成了 i自然等於5

刘奇

去看看閉包結合定時器吧,或是事件綁定

左手右手慢动作

js中的閉包,

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板