js中作用域只有函式作用域和全域性作用域,在函式體內使用var 定義的變數,會被提到函式開始處進行定義,作用域為整個函式,常見的誤區如下
1var a=;
2for(var i = 0;i<10;i++)
5}
6 a[0]() 78
其中,由於for迴圈並不是乙個函式體,所以for迴圈中定義的變數q和i是作用域for迴圈所在的函式體,和a同級,
9 i++ 和 q=i 並不是重新定義變數,只是重複賦值,最終迴圈結束,i = 10,q=9;
10 由於function() 並不是立即執行,所以這裡的q一直是儲存的記憶體引用,最終所有的a[i]()都是輸出 9
11不過,在es6中新增了let命令宣告變數,用法和var類似,不過let所宣告的變數,只在let命令所在的**塊有效果,for迴圈的計數器中就很適合let命令
12var a=;
13for(let i = 0;i<10;i++)
16}
17 a[6]() //
這裡會輸出 6 let宣告的變數僅在塊級作用域有效,所以這裡的i只在本輪迴圈有效果,每次迴圈的i其實都是乙個新的變數
JS中 for 迴圈的變數作用域
js中作用域只有函式作用域和全域性作用域,在函式體內使用var 定義的變數,會被提到函式開始處進行定義,作用域為整個函式,常見的誤區如下 var a for var i 0 i 10 i a 6 由於for迴圈並不是乙個函式體,所以for迴圈中定義的變數q和i是作用域for迴圈所在的函式體,和a同級...
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 ...
js中變數的作用域
變數定義 可以使用var定義變數,變數如果沒有賦值,那變數的初始值為undefined。全域性變數 全域性變數也稱為外部變數,定義在所有函式之外的變數,不屬於哪個函式。其作用域是整個源程式。區域性 函式級 變數 使用var定義在函式體內部的變數,只在函式內部有作用,他只能在定義他的函式中使用,超出函...