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          
個人的な観点です.ご指摘をお願いします.ありがとうございます.