JSでfor循環変数のスコープ
662 ワード
jsにおける作用域は関数の作用域と大域作用域のみであり、関数の体内でvar定義の変数を使用すると、関数の開始において定義され、作用域は関数全体であり、共通の誤差は以下の通りである.
var a=[];
for(var i = 0;i<10;i++){
var q = i;
a[i]=function(){console.log(q)}
}
a[0]()
, for , for q i for , a ,
i++ q=i , , ,i = 10,q=9;
function(){console.log(q)} , q , a[i]() 9
, es6 let , var , let , let ,for let
var a=[];
for(let i = 0;i<10;i++){
ley q = i;
a[i]=function(){console.log(q)}
}
a[6]() // 6 let , i , i
個人的な観点です.ご指摘をお願いします.ありがとうございます.