프로그래밍 언어/JavaScript
[JavaScript] ES6, 변수 총 정리 ( var, let, const)
s워니얌
2023. 1. 15. 17:40
ES6 문법에선 변수 선언 방법이 3가지가 있다. var, let, const 라는 3가지 인데 각각 쓰임과 특징이 다르다. 그 특징을 정리해보려고 한다.
1. 선언
2. 할당
3. 범위
📑 1. 선언
var는 재선언이 가능하다. let과 const는 재선언이 불가능하다. 즉) 이미 있는 변수명을 또 다시 선언하려고 하면 에러가 나는 것.
var 이름 = 'kim'; //재선언 o, 재할당 o, 범위 function
var 이름 = 'park'; //위와 같이 var 이름을 중복해서 재선언이 가능하다.
//이처럼 let, const는 재선언이 안 된다.
let 나이 = 20;
let 나이 = 30;
📑 2. 할당
var과 let은 재할당이 가능하다. 즉) 위에서 선언한 값을 변경하려고 할 때 변경 가능하다. 그러나 const는 변경 불가능 즉) 자바에서 상수라고 생각하면 이해하기 쉬울 것 같다.
var 이름2 = 'kim';
이름 = 'park'; //재할당, var과 let은 재할당이 가능하다.
//const는 재할당 불가능
const 나이1 = 20;
나이1 = 30;
console.log(나이1);
이미 선언한 const 변수에 새로운 값을 할당했을 때 발생하는 에러.
그럼 Object 내에서 const 변수를 생성했을 때 이 값도 재할당 불가능할까? 이것은 아니다. 이는 값을 재할당 하는 게 아닌 변수의 값을 변경하는 것!
const 사람 = {
이름 : 'kim'
}
Object.freeze(사람);
사람.이름 = 'park'; //변수 자체에 재할당하는 게 아니라 오브젝트 내부 값을 변경하는 것.
만약 값을 변경하지 못하게 하려면 .freeze()라는 함수를 사용하면 된다.
📑 3. 함수 범위
var의 범위는 함수 내이며, let과 const는 { } 중괄호 안에서만 생존한다.
function 함수(){
//var는 function 내에서만 존재함
//함수 밖에서는 호출할 수 없음.
var 이름 = 'kim';
}
if(ture){
//let, const는 범위는 모든 중괄호
//function보다 더 작은 모든 중괄호 안에서 살고 죽는다.
let 이름 = 'kim';
}
위와 같은 특징들을 정리하면 다음과 같다. !!
재선언 | 재할당 | 범위 | |
var | o | o | function |
let | x | o | { } 중괄호 |
const | x | x | { } 중괄호 |
반응형