閉鎖に作用する:閉鎖サイクル

@ すべての印刷6:期待される結果
のためにVAR。; I <= 5; I ++ I = 1 ){
  setTimeout(関数(){
    console.log(I);
  }、私は 1000 * 
}
  遅延されたコールバック関数が終了するまで実行される。実際に、タイマーは各反復のsetTimeoutを実行するために実行されている場合でも(...、0)、依然としてサイクルの終了後に実行される。端であるにおいて、全てのコールバック関数どのような「欠陥」とは、意味論と作用させ
ためVAR I 1 =、iは<5 =; I ++ ){関数(){
    setTimeout(関数タイマー(){
      console.log(I);
    }、私は 1000 * 
  })()
}   // 666666

またはフォームの閉鎖はletで達成することができます

 ためVAR I 1 =、iは<5 =; I ++ ){関数(){
      あっ = J 
     setTimeout(関数(){
       console.log(J)。
     }、J * 1000年
   })()
 }    // 1 2 3 4 5 6

 ためVAR I 1 =、iは<5 =; I ++ ){関数(J){
     setTimeout(関数(){
       console.log(J)。
     }、J * 1000年
   })(私)
 }
// 使用容易
のために(容易iは= 1; I <= 5; I ++ ){
  setTimeout(関数タイマー(){
    console.log(I);
  }、私は 1000 * 
}

 

おすすめ

転載: www.cnblogs.com/chorkiu/p/12132724.html