자바스크립트 퀴즈(TDZ)

셔노·2022년 7월 1일
0

개발공부

목록 보기
11/12
post-custom-banner

🐤 실습 과제

let b = 1;

function hi () {
  const a = 1;
  let b = 100;
  b++;
  console.log(a,b);
}

//console.log(a);
console.log(b);
hi();
console.log(b);
  • 콘솔에 찍힐 b 값을 예상해보고, 어디에서 선언된 “b”가 몇번째 라인에서 호출한 console.log에 찍혔는지, 왜 그런지 설명해보세요.
    주석을 풀어보고 오류가 난다면 왜 오류가 나는 지 설명하고 오류를 수정해보세요.
  1. let b / hi() 함수가 선언되며, b 변수는 TDZ으로 hi 함수는 선언, 초기화, 할당까지 진행됩니다.

  2. 그리고 1줄에서 b가 초기화 되며, 메모리에 undefined로 저장됩니다.

  3. 그리고 숫자 1이 b안으로 할당됩니다.

  4. 위에 있는 console.log(b); 에 의해서 b 변수에 있는 1을 콘솔에 찍힙니다.

  5. 그리고 hi 함수가 실행되며, 지역함수인 a에 1이 들어가게 됩니다.

  6. 그리고 지역함수 b가 undefined로 초기화되며 메모리 할당을 받고, 100을 집어넣습니다.

  7. 그리고 b에 들어있는 100에 b++로 인하여 1이 증가된 101로 바뀌게 됩니다.

  8. 다음 hi 함수 마지막줄에 있는 지역함수 a에 들어있는 1과 지역함수 b에 들어있는 101이 콘솔에 출력됩니다.

  9. 다음 전역변수 b에 있는 1이 콘솔에 출력됩니다.

출력값
1
1 101
1

출력값은 위에 값이 나오게됩니다.

만약 주석을 풀게되면 전역변수로 정해진 a가 없기 때문에, a 가 정의되지 않았다고 에러가 뜨게됩니다.

profile
초보개발자
post-custom-banner

0개의 댓글