for 문에서 var 키워드 변수를 사용할 때와 let 키워드 변수를 사용할 때 차이점
안녕하세요 좋은 강의 감사드립니다.
아래에서 for 반복문 내에서 var 키워드를 사용했을 때의 경우에는 var 키워드는 함수 스코프를 가지므로 setTimeout 의 콜백 함수가 실행되는 시점에 i 변수의 값은 이미 3인 상태이므로 3 3 3이 출력되는 것은 이해를 했습니다.
그런데 let 키워드로 선언한 변수는 블록 스코프를 가지는데 언뜻 이해하기로는 for 블록 내부에 i 변수가 선언되었다고 생각하면 var 키워드와 마찬가지로 setTimeout 의 콜백 함수가 호출되는 시점에 i 변수는 3이어야 하는게 아닐까라는 생각이 듭니다. 근데 0 1 2 가 출력되는 것을 보면 혹시 for 반복이 한번 실행될 때마다 i 변수가 생성되어서 서로 다른 블록 스코프를 가지는 것인지 아니면 제가 이해하지 못한 다른 내용이 있는 것인지 궁금합니다!
그리고 마지막으로 블록 스코프란 { } 이렇게 중괄호 내에 선언되는 경우를 말하는 것 같은데 for 문의 let i 변수의 경우에는 정확히 말하면 블록 내부에 선언되어 있지는 않은데 이 경우에도 블록 스코프라고 봐야 하는 건가요??
감사합니다!
function timer() {
for (var i = 0; i < 3; i++) {
setTimeout(function () {
console.log(i); }
, 1000);
}
}function timer() {
for (let i = 0; i < 3; i++) {
setTimeout(function () {
console.log(i); }
, 1000);
}
}
Câu trả lời 1
0
안녕하세요 Droid 님! 질문 주셔서 감사합니다 😊
해당 내용은 현재 수강하고 계신 강좌 중 아래 강좌에서 자세한 내용을 설명하고 있습니다.
변수 스코프(함수 스코프와 블록 스코프) 그리고 VAR 변수의 문제점 1편 📕
강좌의 10분정도 위치에 for 문의 let 변수가 어떻게 바인딩이 되는지 그리고 setTimeout 의 콜백함수에 어떻게 캡쳐링이 되는지 설명을 하고 있습니다.
함수 실행 컨텍스트 2편 - 다시 보는 함수 스코프와 블록 스코프📕
함수 실행 컨텍스트를 다루며 같은 문제를 좀 더 자세하게 설명하고 있습니다.
스코프 체이닝(Scope Chaining)은 언제 실행될까? 와 관련된 중요한 문제와 해결법📕
추가로 이 강의도 같이 보시면 좋을 것 같습니다
감사합니다 😊
프론트엔드 학습 수준 문의
0
21
2
질문있습니다
0
20
1
1번 문제 질문입니다.
0
24
1
음악플레이어 문제 중 코드질문
0
18
1
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
38
2
문제와 풀이4 문제점
0
32
2
최근 코테, 과제 테스트 트렌드
0
51
2
lucide react 아이콘 설치
0
35
2
17강 zustand store 서버에서 생성
1
30
1
문제와 풀이
0
19
1
선생님 강의 블로그에 정리해도되나요?
0
52
1
V8에서 undefined를 관리하는 방법에 대한 질문입니다
0
69
2
코드 샌드박스 소스 입력시 콘솔이 계속 반응하는것 같아요.
0
166
3
배열 생성자로 배열 생성시 empty와 undefined
0
171
2
nvm 설치 오류입니다.
0
430
2
console 이 안보입니다.
0
145
2
then 메서드에서 Promise 를 반환하는 코드에 대한 질문입니다.
0
192
2
Global 스코프 질문
0
163
2
keys(), entrieS() 같은 함수의 반환값이 왜 iterator인지 잘 이해가 안갑니다..!
0
182
1
var 변수의 문제점 설명하실 때 질문 있습니다.
0
510
2
메모리에 변수 생성과 값을 할당할 때
0
408
2
클로저 스코프와 블록 스코프 질문드립니다.
2
688
1
코드샌드박스 화면구성이 달라졌네요.
0
673
4
커리큘럼 관련 질문
0
334
1

