let, const에서의 호이스팅에 대해서...
274
9 asked
강의 내에서 let, const 에대해서는 호이스팅이 일어나지 않는다고 했는데 저는 조금 생각이 다르다고 생각해요.
일단 크게 2가지 단계로 나눠본다고 가정한다면...
1. 선언단계
변수나 함수들이 선언된다.
2. 실행단계
선언된 변수 값이 할당되거나 함수들이 실행된다.
즉 같은 변수를 block scope단위로 중첩해서 선언한다고 가정한다면 execution context가 생성 시, 호이스팅을 하지 않았다면 outer environment reference(es5 이전 scope chain)를 에서 자유변수로부터 값을 사용참조하겠지만, 호이스팅이 발생하면서 이미 두 execution context 내부적으로는 변수의 존재를 알고있으므로, 실행단계에서 TDZ존에 걸린다고 생각합니다.
Answer 1
3
안녕하세요 아기고양이님!
let 이나 const로 선언한 변수는 호이스팅을 안하는게 아니라 호이스팅이 발생하면서 변수의 존재를 알게되는 것이 아닌가 라고 의견을 말씀주셨는데요!
먼저 호이스팅의 정의를 말씀드리자면, 니콜라스 자카스의 <모던 자바스크립트>에 따르면 호이스팅이란 자바스크립트 엔진이 블록을 조사할 때 var 변수 선언을 발견하면 함수의 최상단 혹은 전역 스코프로 호이스팅하는 현상을 의미합니다. 그리고 let 과 const의 경우는 호이스팅되지 않고 TDZ내에 배치한다고 합니다. 때문에 아기고양이님의 말씀처럼 호이스팅이 발생하면서 변수의 존재를 알게 된것이 아니라, 이미 엔진이 변수의 존재를 알기에 호이스팅을 발생시켰다 이렇게 보는게 더 타당하지 않나 저는 생각합니다.
여기가지가 제 생각인데요 ㅎㅎ 좋은 의견 감사합니다. 아기 고양이님의 얘기는 항상 즐겁게 읽고 있습니다!
강의에 대한 많은 관심에 감사드립니다 :)
imagesLoaded에 관한 질문
0
3
2
useEffect와 lifecycle문의
0
7
1
프론트엔드 학습 수준 문의
0
25
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
41
2
최근 코테, 과제 테스트 트렌드
0
56
2
lucide react 아이콘 설치
0
35
2
17강 zustand store 서버에서 생성
1
30
1
문의관련 문의
0
37
2
next.js 를 2대이상 실행하는 경우 제공하는 cache 기능들은 어떻게 되나요?
0
47
2
76. 전문성 더하기: 놓치면 아쉬운 관련 기술들 수업 자료가 없어요.
0
41
2
ai 도구 질문
0
30
1
저는 왜 콘솔에서 props가 한 줄만 찍히나요?
0
44
1
렌더링 차단 리소스 javascript 실행에 관련해서 질문 있습니다.
0
44
2
데이터 로딩중 화면만 계속 나와요!!
0
51
2
prototype.constructor 를 꼭 설정해주어야 하는 이유가 뭔가요?
0
247
0
생성자 함수와 클래스 중 어느 것을 사용하는게 효율적인가요?
1
236
1
클로저 파트 마지막 예시에 관해 질문있습니다.
1
260
1
이벤트 위임관련...
1
250
1
생성자 함수관련...
2
222
1
function과 arrow function 관련
1
287
1
객체 공장장, <생성자> 편에 잘못된 내용이 있는것 같습니당
1
242
1
동영상강의에서 사용했던 코드 공유 부탁드립니다.
1
197
1
생성자 내에 함수 선언
2
314
2
apply에서 this 질문입니다
2
182
1

