프론트엔드✏️/코드캠프
호이스팅(Hoisitng)
당근먹는하니
2022. 7. 1. 13:17
728x90
반응형
변수 선언 방식 - var, let, const
var, let, const
여기서 var는 재선언과 재할당이 가능하기 때문에 현재는 사용하지 않는 선언 방식이다.
뿐만 아니라 호이스팅에서 문제가 된다.
console.log(hoisting);
let hoisting = 3;
이럴 경우 hoisting을 찾을 수 없다는 에러 메세지가 나온다.
console.log(hoisting);
var hoisting = 3;
이 경우엔 hoisting의 값이 undefined로 출력된다.
이게 호이스팅 때문이다!
호이스팅
코드 실행을 위한 컨텍스트를 만들면서 코드 관련된 식별자(변수명, 함수명)을 수집하면서 발생한다.
호이스팅은 변수와 함수의 선언부만 코드의 최상단으로 끌어올려 주는 것을 의미한다.
(C++배울 때 선언은 맨 위에 하고 아래에 함수 정의부를 적어주었던 것과 같다.)
그래서 호출을 먼저했지만, 선언부가 호이스팅으로 최상단으로 올라와있기 때문에 선언은 된 상태, 즉 undefined 상태로 나오는 것이다.
함수의 호이스팅
호출이 위에 있고 선언, 정의부는 밑에 있지만 호출이 된다.
이는 함수 선언식이 호이스팅의 영향을 받기 때문이다! ( function name() {} 형식으로 선언하는 방법)
호이스팅은 우리가 의도치않는 결과를 가져오기도 하기 때문에, 대신 함수 표현식/화살표 함수를 사용하는 것이 좋다.
자바스크립트는 왜 프로토타입을 선택했을까
프로토타입으로 검색하면 으레 나오는 서두처럼 저 또한 자바스크립트를 처음 접했을 때 가장 당황스러웠던 게 프로토타입이었습니다.
medium.com
728x90
반응형