let, const에서의 호이스팅에 대해서...
279
投稿した質問数 9
강의 내에서 let, const 에대해서는 호이스팅이 일어나지 않는다고 했는데 저는 조금 생각이 다르다고 생각해요.
일단 크게 2가지 단계로 나눠본다고 가정한다면...
1. 선언단계
변수나 함수들이 선언된다.
2. 실행단계
선언된 변수 값이 할당되거나 함수들이 실행된다.
즉 같은 변수를 block scope단위로 중첩해서 선언한다고 가정한다면 execution context가 생성 시, 호이스팅을 하지 않았다면 outer environment reference(es5 이전 scope chain)를 에서 자유변수로부터 값을 사용참조하겠지만, 호이스팅이 발생하면서 이미 두 execution context 내부적으로는 변수의 존재를 알고있으므로, 실행단계에서 TDZ존에 걸린다고 생각합니다.
回答 1
3
안녕하세요 아기고양이님!
let 이나 const로 선언한 변수는 호이스팅을 안하는게 아니라 호이스팅이 발생하면서 변수의 존재를 알게되는 것이 아닌가 라고 의견을 말씀주셨는데요!
먼저 호이스팅의 정의를 말씀드리자면, 니콜라스 자카스의 <모던 자바스크립트>에 따르면 호이스팅이란 자바스크립트 엔진이 블록을 조사할 때 var 변수 선언을 발견하면 함수의 최상단 혹은 전역 스코프로 호이스팅하는 현상을 의미합니다. 그리고 let 과 const의 경우는 호이스팅되지 않고 TDZ내에 배치한다고 합니다. 때문에 아기고양이님의 말씀처럼 호이스팅이 발생하면서 변수의 존재를 알게 된것이 아니라, 이미 엔진이 변수의 존재를 알기에 호이스팅을 발생시켰다 이렇게 보는게 더 타당하지 않나 저는 생각합니다.
여기가지가 제 생각인데요 ㅎㅎ 좋은 의견 감사합니다. 아기 고양이님의 얘기는 항상 즐겁게 읽고 있습니다!
강의에 대한 많은 관심에 감사드립니다 :)
<div id="banner">배너 이미지</div> 관련 질문
0
4
1
강의자료
0
17
1
윈도우에서 Node js를 설치하고 싶어요
0
24
0
addToFile function에서 path를 사용해 새로운 파일을 생성
0
35
1
[46강] EventEmitter를 활용한 10가지 패턴 중 플러그인 아키텍처
0
31
2
강의가 누락된것 같습니다.
0
38
2
용어 발음법이 계속 바뀌는 것 같은데 이런 부분들 개선이 가능할까요...?
0
48
1
counter01.html은 어디있을까요?
1
16
1
존재하지 않는 일기 url입력 시 alert이 두 번 떠요
0
42
1
useState 직접 구현 부분에서 질문이 있습니다.
1
46
1
학습을 하고 블로그에 정리를 해도 괜찮을까요?
1
45
1
교재(3쇄)와 강의 내용 문의
0
39
2
섹션2번 부분 강의 화면이 잘 못된것 같아서 문의합니다.
0
24
1
call stack 표현이 잘못표현된것이 아닌가요?
0
83
2
prototype.constructor 를 꼭 설정해주어야 하는 이유가 뭔가요?
0
255
0
생성자 함수와 클래스 중 어느 것을 사용하는게 효율적인가요?
1
242
1
클로저 파트 마지막 예시에 관해 질문있습니다.
1
267
1
이벤트 위임관련...
1
258
1
생성자 함수관련...
2
229
1
function과 arrow function 관련
1
288
1
객체 공장장, <생성자> 편에 잘못된 내용이 있는것 같습니당
1
246
1
동영상강의에서 사용했던 코드 공유 부탁드립니다.
1
198
1
생성자 내에 함수 선언
2
326
2
apply에서 this 질문입니다
2
190
1

