JS中 for 迴圈的變數作用域

2021-09-11 02:15:32 字數 702 閱讀 9801

js中作用域只有函式作用域和全域性作用域,在函式體內使用var 定義的變數,會被提到函式開始處進行定義,作用域為整個函式,常見的誤區如下:

var a=;

for(var i = 0;i<10;i++)

}a[6]()

由於for迴圈並不是乙個函式體,所以for迴圈中定義的變數q和i是作用域for迴圈所在的函式體,和a同級,

i++ 和 q=i 並不是重新定義變數,只是重複賦值,最終迴圈結束,i = 10,q=9;

由於function() 並不是立即執行,所以這裡的q一直是儲存的記憶體引用,

最終所有的a[i]()都是輸出 9

es5解決方法,改為立即執行函式

var a=;

for(var i = 0;i<10;i++)()

}a[6]()

es6解決方法,使用 let 來宣告。

在es6中新增了let命令宣告變數  用法和var類似,不過let所宣告的變數,只在let命令所在的**塊有效果,for迴圈的計數器中就很適合let命令

var a=;

for(let i = 0;i<10;i++)

}a[6]() //這裡會輸出 6 ,let宣告的變數僅在塊級作用域有效,所以這裡的i只在本輪迴圈有效果,每次迴圈的i其實都是乙個新的變數

JS中for迴圈變數作用域

js中作用域只有函式作用域和全域性作用域,在函式體內使用var 定義的變數,會被提到函式開始處進行定義,作用域為整個函式,常見的誤區如下 1 var a 2for var i 0 i 10 i 5 6 a 0 78 其中,由於for迴圈並不是乙個函式體,所以for迴圈中定義的變數q和i是作用域for...

js中變數的作用域

變數定義 可以使用var定義變數,變數如果沒有賦值,那變數的初始值為undefined。全域性變數 全域性變數也稱為外部變數,定義在所有函式之外的變數,不屬於哪個函式。其作用域是整個源程式。區域性 函式級 變數 使用var定義在函式體內部的變數,只在函式內部有作用,他只能在定義他的函式中使用,超出函...

python中for迴圈變數作用域

在講這個話題前,首先我們來看一道題 1 def foo return lambda x x i for i in range 1 5,2 print f 3 for f in foo 夥伴們,你們認為這裡產生的結果是什麼呢?我們再來看下這題的變體 2 def foo functions for i ...