1.4.4 주의할 점
1.4.4 주의할 점 스코프 주의 for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i) }, i * 1000) } 위 코드를 실행하면 0, 1, 2, 3, 4초 뒤에 5만 출력됨. i가 전역 변수로 작동하기 때문. 자바스크립트는 기본적으로 함수 레벨 스코프를 따르고 있기 때문에 var는 for 문의 존재와 상관없이 해당 구문이 선언된 함수 레벨 스코프를 바라보고 있으므로 함수 내부 실행이 아니라면 전역 스코프에 var i가 등록돼 있을 것. for 문을 다 순회한 이후, 태스크 큐에 있는 setTimeout을 실행하려고 했을 때, 이미 전역 레벨에 있는 i는 5로 업데이트가 완료돼 있음. 그럼 0, 1, 2, 3, 4초 뒤에 각 0, ..
2024. 4. 23.