0
뭔가 누군가가 나를 도울 수 있다면 정말 명확하게 이해하지 못했다 있습니다 :비동기 범위
let arr = [1,2,3,4,5,6,7];
let b = 0
for (let a of arr) {
setTimeout(() => {
console.log(b, a)
}, 2000)
b = b + 1;
}
/* Output
7 1
7 2
7 3
7 4
7 5
7 6
7 7
*/
의이 b
7이 때문에 초와 동일 생각한 후, 변수 b
7과 동일 한 후, 왜 a
은 b
과 다른 동작을합니까?
b는 for 루프 (항상 동일한 변수 b)에 의해 카운트되는 전역 변수입니다. a가 for 루프에서 선언되므로 각 반복에 대해 새 값으로 a의 새 인스턴스를 얻습니다. 이 인스턴스는 for 루프 내에서 사용할 수 있으며 setTimeout에 전달되는 익명의 함수에 바인딩됩니다. let에 대한 자세한 내용은 MDN을 확인하십시오. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let – glutengo