본문 바로가기
Language/JavaScript

[ES6] var, let, const 차이점

by developerBeluga 2022. 1. 31.
728x90
반응형

 

 

 

var

var name = 'nime';
console.log(name);

자바스크립트에서 변수를 선언할 때 사용하는 방법 중 하나이다. 

 

 

var를 사용했을 때 발생하는 문제점

var num = 10;

if (num == 10) {
	var num = 20;
	console.log("num in if : ", num); // num in if : 20
}

console.log(num); // 20

하지만 var를 사용하여 변수를 선언해주면 위 코드처럼

if문 안에서 변경이 된 게 밖에서도 영향을 미친다.

ES6부터는 구분하기 위해 scope라는 개념이 추가된 let이 등장하게 된다.

 

📌 scope(유효범위)란?
변수에 접근할 수 있는 범위이다.
전역 스코프는 전역에 선역되어있는 어느 곳이든 해당 변수에 접근 가능하다.
지역 스코프는 해당 지역에서만 접근할 수 있어 지역을 벗어나면 접근할 수 없다.

 

 

let

let num = 10;

if (num == 10) {
	let num = 20;
	console.log("num in if : ", num); // num in if : 20
}

console.log(num); // 10

let은 var와 달리 if문 안에서 변경이 되었어도 밖에 영향을 못미친다.

 

 

const

const PI = 3.1415;
PI = 3.141592; // Uncaught TypeError: Assignment to constant variable.

const는 변하지 않는 값을 사용할 때 쓴다.

즉, 상수라고 할 수 있다.

한 번 변수에 값을 할당하고 나면 수정할때 에러가 발생한다.

 

 

정리

  var let const
재선언
재활당

 

 

호이스팅

호이스팅은 코드를 싱행하기 전에 변수선업과 함수선을 해당 스코프의 최상단으로 끌어 올려진 것을 말한다.

자바스크립트의 모든 선언에는 호이스팅이 일어난다.

하지만 호이스팅을 사용했을 때 var 변수가 영향을 많이 받아 가끔 오류가 발생하기 시작했다.

그래서 최대한 let과 const를 사용을 권장한다.

 

 

 

 

 

728x90
반응형

댓글