• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

좋은강의 감사합니다 이거는 호이스팅이 실행안되는거 같은데

20.10.20 19:20 작성 조회수 182

0

if(true){

  var a = 10

   if(true){

     console.log(a);

     var a = 20

   }

   console.log(a);

}

console.log(a);

일케하면은 10 ,20,20 나오는데

호이스팅이 안되는서 첫번째거는 클로저처럼 내부함수가 외부함수 스코프 참조하는거 알겠는데

그다음은 왜 20 , 20 나오는걸까요??

if 문으로도 스코프 되나여?? 

답변 3

·

답변을 작성해보세요.

2

ES5 이하 환경에서(var 사용 등) 스코프는 전역스코프 외엔 오직 '함수스코프'만 있습니다.
if문 등에 의한 '블록스코프'는 동작하지 않습니다.
그러니까 작성하신 코드에서는 전역스코프만 존재하는 상황입니다.
클로저, 내부함수, 외부함수 등을 고려할 상황이 아닙니다.

1

아뇨, var를 쓰고 let, const 등을 쓰지 않는 경우를 말씀드린 겁니다.

0

이순곤님의 프로필

이순곤

질문자

2020.10.21

답변 감사합니다 ES5 이하 환경이라고 하셧는데 

ES6환경설정이 따로 있나용??