커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
3-9강. 첫번째 console.log(a) 결과가 undefined인 이유에 대하여 질문합니다.
JavaScript 문법 종합반 v0
3주차
북마크
이*현
댓글
1
추천
0
조회수
24
조회수
24
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


강의에서 나온 예시 코드의 실제 실행 순서를 제가 제대로 이해한 것이 맞는지 적어보았습니다. 맞는지 확인 부탁 드립니다.


예시 코드에 적어두었지만 처음 console.log(a) 를 호출할 때, 1로 예상했으나 실제로는 undefined로 출력됩니다.

undefined로 출력되는 이유는 최초 전역변수로 a 값을 1로 할당했으나 (예상실행순서의 [ㄱ]),

inner 함수 내부에서 지역변수로 a를 선언했기에(예상실행순서의 [ㄴ])호이스팅된 inner 내부의 지역 변수 a의 값을 출력하게되어 undefined가 출력되는게 맞나요?


즉, 변수명이 동일하게 a로 되어 있을 뿐, 전역변수 a와는 전혀 관련없는 지역변수에 접근하고 있다가 맞는지 궁금합니다.




-------------- 예시 코드 ---------------

var a = 1;

var outer = function () {

 var inner = function () {

  console.log(a); // undefined <- 1로 예상했으나 실제로는 undefined가 출력됨

  var a = 3;

 };

 inner();

 console.log(a); // 1

};

outer();

console.log(a); // 1



-------------- 예상 실행 순서 ---------------


전역

ㄴ var a; // a = undefined;

ㄴ a = 1; // [ㄱ] a = 1;

ㄴ outer()

 ㄴ inner()

  ㄴ var a;     // [ㄴ] a = undefined

   ㄴ console.log(a); // 출력값 : undefined << 바로 위의 지역변수 a에 접근

   ㄴ a = 3;

 ㄴ console.log(a); // 출력값 : 1 << 전역변수 a 접근

ㄴ console.log(a);  // 출력값 : 1 << 전역변수 a 접근





취소
 공유
취소
댓글 0
댓글 알림
나의얼굴