반응형
for (var i = 0; i < 3; ++i) {
// 1초(1000밀리 초) * i 초후에 i를 출력
setTimeout(() => {
console.log(i);
}, 1000 * i);
}
아무 생각없이 출력결과를 생각해본다면 0 1 2 가 찍힐것 같다.
하지만
3
3
3
var값은 말그대로 전역에 있는 값이다. setTimeout이 1초후에 var i를 접근한다 그때 값이 3이라서 이런 결과가 나온다.
for (let i = 0; i < 3; ++i) {
// 1초(1000밀리 초) * i 초후에 i를 출력
setTimeout(() => {
console.log(i);
}, 1000 * i);
}
let을 사용하면 원하는 결과가 나온다. (이런 동기 비동기를 주의 해야한다.)
0
1
2
반응형
'언어 > javascript' 카테고리의 다른 글
javascript : arguments (0) | 2020.11.29 |
---|---|
javascript : array (0) | 2020.11.29 |
javascript : var, let, const 차이 (0) | 2020.11.28 |
javascript : 템플릿 문자열 (0) | 2020.11.28 |
javascirpt : == 과 === 차이 (0) | 2020.11.28 |