본문 바로가기
🟨 JavaScript 🟨

JavaScript - 변수와 상수, 호이스팅

by 백씨네 2022. 10. 28.

예약어  : 이미 쓰임이 정해져 있는 키워드를 의미한다. 이 예약어는 변수명으로 사용할 수 없고

변수의 예약어는 var, let가 있고, 상수의 예약어로는 const가 있다.

 

변수의 var는 hoisting (호이스팅) 이라는 이슈가 있어서 쓰이지 않는다.. (호이스팅은 밑에..!)

그러므로 let(변수) 과 const(상수)를 사용한다.

선언 방법

예약어[let, const]  변수명[개발자 임의] = [데이터 값]

예약어와 변수명 사이는 띄어쓰기로 구분한다.

변수 : let 

재선언 X , 재할당 O  

let number  //선언
number = 1  //할당
console.log(number) //출력

//let number // 불가
number = 10 //재할당
console.log(number)

 상수 : const

재선언X , 재할당X

선언과 동시에 값을 할당해야 한다. (대입 연산자를 활용 )

const num1 = 1
console.log(num1)

 

 

호이스팅 (Hoisting)

hoisting ( 호이스팅)은 자바스크립트 문법에서 변수나 함수를 선언 이전에 사용할 수 있다는 뜻,

 

변수나 함수를 선언하기 전에 사용할 수 있었기 때문에 끌어올려지는 것처럼 보였을 뿐 실제로 끌어올려지는 것은 아니다.

실행 컨텍스트가 생성될 때 ( 코드들이 실행되기 위한 환경이 생성될 때) 식별자 정보를 수집하는데, 이때 변수들을 먼저 담기 때문에 할당 전에 사용할 수 있게 된다.(메모리에 변수가 할당) 그래서 var 변수를 선언 전에 사용하게 되면 에러를 띄우는 것이 아닌 undefined 을 출력해준다.

let, const는 호이스팅이 되지 않느냐? - 아니다. 그렇지만.....

실행 컨텍스트가 생성될 때 변수들은 다 정보를 담기 때문에 호이스팅이 되는 것은 맞으나, 초기화 단계를 거쳐 var 와 달리 선언은 되어 있지만 변수에 값을 담기 위한 메모리에 공간이 확보되어 있지는 않기 때문에 할당 이전에 미리 사용할 수 없게 된 것이다.

 

댓글