본문 바로가기

JS

[면접 준비] Var와 Let의 차이가 무엇인가요?

const : 상수를 만드는 것 실제 예시
바뀌거나 대체되지 않았으면 하는 값들을 만들 때 쓰임. const id = "ddeok"
cosnt password = "0105"
만약 변수를 바꾸려고 시도한다면... ➞ password = "1234"
Console창 : TypeError...

Javascript 에서 var를 먼저 사용하고 있었다. 

2015년에 Javascript ES2015(ES6)로 업그레이드 되면서 기존에 var의 이슈를 보완 하면서 나온 것이 let 이다.  

 

 

기존에 사용했던 var의 문제점을 아래서 다뤄 보겠다. 


<알아야할 개념 - 호이스팅>

js 엔진은 선언해둔 변수를 미리미리 조사해 놓는다. (따로 뽑아 가서 기억을 한다)

나중에 a를 선언할 때 그 변수를 최상단으로 올리는 것을 일컷는다. 


1. 모든 코드는 Top to Bottom 플로우로 흘러가지만 var는 예외가 많다. 

기본적으로 변수 선언을 먼저 하고 결과값을 도출한다. 

var a = 1
var name = "ddeok"
var age = 20

console.log(age)

하지만 먼저 선언 되어야 하는 변수 전에 console.log가 먼저 나오면...

(1) console.log(a)
var a = 1
console.log(a)
Console창에는
➞ undefined (?)
1

여기서 ➞ undefined 이 에러 대신 나오는 이유는 호이스팅 개념 때문이다. 

호이스팅 시 변수의 선언과 (undefined 으로)초기화를 같이 시켜 버리기 때문이다. 

다시 말해, 호이스팅은 위 설명처럼 자바스크립트 엔진이 사전에 작성 해둔 변수를 모두 기록하는 '습성' 때문에 (1) console.log(a)를 에러로 버리지 않고 가지고 있다가 a 변수가 나오면 그재서야 할당 하는 것이다. 

 

만약 선언(var,const,let)을 하지 않는다면...

console.log(a)
a = 1 // 선언하지도 않음
var a // 뒤 늦게서야 따로 선언 함

console.log(a)
Console창에는
➞ undefined (?)
1

모든 것을 용서 해주는 자바스크립트, 일단 변수 가지고 있는다. 

 

2. var는 전역변수와 지역별수의 개념이 확실하지 않다. 


<알아야할 개념 - 전역변수>

블락{} 밖에서 선언을 한 어디서든 쓰일 수 있는 변수이다. 

 

<알아야할 개념 - 지역변수>

블락{} 안에서 선언된 변수이며, 블락 안에서만 쓸 수 있다. 


 

 

반응형