inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Thật sự! JavaScript - Từ cơ bản đến nâng cao

Phạm vi biến (Phạm vi hàm và Phạm vi khối) và Vấn đề của biến VAR Phần 1 📕

for 문에서 var 키워드 변수를 사용할 때와 let 키워드 변수를 사용할 때 차이점

Đã giải quyết

181

Droid

8 câu hỏi đã được viết

0

안녕하세요 좋은 강의 감사드립니다.

아래에서 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); 
  } 
}

javascript es6 객체지향 es5

Câu trả lời 1

0

codingmax

안녕하세요 Droid 님! 질문 주셔서 감사합니다 😊

해당 내용은 현재 수강하고 계신 강좌 중 아래 강좌에서 자세한 내용을 설명하고 있습니다.

감사합니다 😊

 

자료집 관련

0

4

1

13. (App 2) 기본기 훈련 에서

0

12

1

챌린지 시작일 문의

0

15

0

2. 어떤 도구를 사용하는 것이 가장 유리할까? 강의 중

0

15

1

11차시 Antigravity IDE 설치 후

0

17

1

처음 에이전트 설정을 잘못 했을 경우 수정 하는 방법

0

15

1

5,6,7,8 내용이 없어요

0

14

1

ThemeProvider를 이용해서 NextThemeProvider를 따로 생성하여 Layout.tsx에 적용하는 이유는 뭘까요?

0

13

1

진짜화면이랑달라서못해먹겟어요먹겟어요

0

21

1

Enable Linting 항목을 찾을수가 없습니다.

0

81

2

선생님 강의 블로그에 정리해도되나요?

0

96

1

V8에서 undefined를 관리하는 방법에 대한 질문입니다

0

119

2

코드 샌드박스 소스 입력시 콘솔이 계속 반응하는것 같아요.

0

243

3

배열 생성자로 배열 생성시 empty와 undefined

0

226

2

nvm 설치 오류입니다.

0

548

2

console 이 안보입니다.

0

199

2

then 메서드에서 Promise 를 반환하는 코드에 대한 질문입니다.

0

249

2

Global 스코프 질문

0

204

2

keys(), entrieS() 같은 함수의 반환값이 왜 iterator인지 잘 이해가 안갑니다..!

0

219

1

var 변수의 문제점 설명하실 때 질문 있습니다.

0

544

2

메모리에 변수 생성과 값을 할당할 때

0

449

2

클로저 스코프와 블록 스코프 질문드립니다.

2

720

1

코드샌드박스 화면구성이 달라졌네요.

0

753

4

커리큘럼 관련 질문

0

371

1