Javascript | var, let, const

space's pace·2022년 6월 30일
0
post-thumbnail

var, let, const 차이점은?

var는 function-scoped이고, let, const는 block-scoped이다.

그럼, function-scoped와 block-scoped가 뭘까?


var

예전에는 자바스크립트의 변수 선언이 var로만 가능했었다. var로 변수 선언을 했을 때의 가장 큰 특징은 중복 선언이 가능하다는 점인 것 같다. 

var a = 100;
console.log(a) // 결과값 100

var a = 200;
console.log(a) // 결과값 200

var a = 300;
console.log(a) // 결과값 300

var 로 선언한 변수는 동일한 이름으로 여러 번 중복해서 선언이 가능함.
필요할 때마다 변수를 유연하게 사용할 수 있다는 장점이 될 수도 있지만, 기존에 선언해둔 변수의 존재를 잊고 값을 재할당하는 등의 실수가 발생할 가능성이 큼. 특히 코드량이 많아졌을 때, 같은 이름의 변수명이 여러 번 선언되었다면 어디 부분에서 문제가 발생하는지 파악하기 힘들뿐더러 값이 바뀔 우려가 있음.


이를 보완하기 위해 ES6부터 추가된 변수 선언 방식이 let 과 const 이다.


let 

변수명을 중복으로 선언하면 아래와 같이 에러가 발생한다. 하지만 값을 재할당 하는 것은 가능하다. 

let a = 100;
consolel.log(a) // 결과값 100

let a = 200;
console.log(a) // 에러 발생
// SyntaxError: Identifier 'a' has already been declared
// 중복 선언 불가 

a = 300;
consolel.log(a) // 결과값 300
// 값을 재할당 하는 것은 가능

const

변수명을 중복으로 선언하면 let과 같이 에러가 발생한다. let과 다른 점은 값을 재할당 하는 것도 불가능하다는 점이다. 처음에 한 번 선언하고 나면 다른 값을 넣을 수 없기 때문에 보통 const상수를 선언하는 키워드로 사용된다.

const a = 100;
consolel.log(a) // 결과값 100

const a = 200;
console.log(a) // 에러 발생
// SyntaxError: Identifier 'a' has already been declared
// 중복 선언 불가

a = 300; // 에러 발생
// Assignment to constant variable.
// 값을 재할당 하는 것도 불가

let 과 const 의 차이점은 immutable 의 여부임. let 은 변수에 다른 값을 재할당할 수 있지만, const 는 재할당 시 에러 메시지가 출력됨.

function func() {
	const list = ["A", "B", "C"]

    list = "D";
    console.log(list);
    // TypeError: Assignment to constant variable

    list.push("D");
    console.log(list); // ["A", "B", "C", "D"]
}

const 는 constant(상수)를 뜻하기 때문에 한 번만 선언이 가능하며 값을 바꿀 수도 없음. 하지만 위 예제와 같이 배열과 오브젝트의 값을 변경하는 것은 가능하다.
결과적으로 const 는 불변을 의미하는 것과 다르게,값을 재할당하는 코드만 불가능 하다고 볼 수 있다.



var, let, const 차이점 | https://80000coding.oopy.io/e1721710-536f-43f2-823b-663389f5fbfa
출처: https://heinafantasy.com/153 [디지털 노마드:티스토리]

profile
블로그 이사 준비중!

0개의 댓글