흰 스타렉스에서 내가 내리지

[JS] var, let, const 와 hoisting 본문

Javascript

[JS] var, let, const 와 hoisting

주씨. 2022. 1. 17. 19:57
728x90

호이스팅(hoisting) : 변수를 어디서 선언했는지 상관없이 항상 제일 위로 선언을 끌어올려 주는 것을 말한다.

var 타입은 선언하기도 전에 변수에 접근해도 undefined만 뜨지 에러가 나지 않는다. 호이스팅 덕분.

let과 const타입은 선업 전에 변수에 접근하면 error가 난다.

 

var은 블록스코프를 무시한다. 블록스코프에서 선언하더라도 아무데서나 접근할 수 있다. 

 

letconst 타입으로 지정된 변수는 블록스코프에서 선언 하였을 때 블록 밖에서 사용하지 못한다.

 

let은 변수 할당 뒤에도 값 변경이 가능하다.

 

 

const는 선언과 동시에 값 할당을 해야하며, 할당 이후에는 재할당이 불가능하다.

 

 

const로 object를 할당한다면?

object 자체는 변경할 수 없지만, object 내부의 값은 변경할 수 있다. 원리는 아래 사진과 같다.

const joos{ name='joos', age='23'};

 

object에 대한 레퍼런스는 잠겨있지만, object 내부의 변수에 대한 레퍼런스는 잠겨있지 않기 때문이다.