cs 공부

var, let, const 에 대해 설명해주실 수 있을까요?

늘곰's 2023. 10. 15. 22:35

var (Variable)

var는 오래된 변수 선언 키워드로 ES5와 그 이전 버전에서 주로 사용되었습니다.

var로 선언된 변수는 함수 스코프(function-scoped)를 가지며, 함수 내에서 선언한 경우 해당 변수는 함수 내에서만 접근 가능합니다.

var 변수는 호이스팅(hoisting)이 발생하며, 선언부가 함수나 블록 맨 위로 끌어올려지지만 초기화는 그 자리에 남아 있습니다.

var 변수는 중복 선언이 가능하며 재할당이 가능합니다.

 

let

let은 ES6(ES2015)에서 도입된 변수 선언 키워드로, 블록 스코프(block-scoped)를 가집니다. 즉, 블록 내에서 선언한 변수는 그 블록 내에서만 유효합니다.

let 변수도 호이스팅이 발생하지만, 선언과 초기화가 분리되어 변수가 선언된 블록 이전에 접근하면 ReferenceError가 발생합니다.

let 변수는 중복 선언이 허용되지 않으며, 재할당은 가능합니다.

중복 선언이 허용되지 않음:

중복 선언은 같은 스코프 내에서 동일한 변수 이름을 두 번 선언하는 것을 의미합니다. let으로 선언된 변수는 같은 스코프 내에서 중복 선언할 수 없습니다. 이것은 변수 이름 충돌을 방지하고 프로그램에서 예기치 않은 동작을 방지하기 위한 중요한 특성입니다.

let x = 10;
let x = 20; // 에러: "Identifier 'x' has already been declared"

 

변수 재할당이 가능함:

변수 재할당은 이미 선언된 변수에 새로운 값을 할당하는 것을 의미합니다. let으로 선언된 변수는 초기값을 할당한 이후에 나중에 새로운 값을 할당하여 변수를 재할당할 수 있습니다.

let y = 10;
y = 20; // 변수 y를 재할당함

 

 

const (Constant)

const는 불변 상수를 선언하기 위한 키워드입니다. 한 번 할당된 값은 변경할 수 없습니다.

const 변수도 블록 스코프를 가지며, 중복 선언이 허용되지 않습니다.

const 변수를 선언할 때 반드시 초기화해야 하며, 이후 재할당이 불가능합니다.

 

각각의 장단점

 

var

장점

호이스팅(hoisting)이 발생하므로 변수 선언 전에 사용할 수 있습니다.

전역 스코프에서 선언한 변수는 전역 객체의 프로퍼티로 사용할 수 있습니다.

 

단점

함수 스코프를 가지므로 블록 스코프를 사용할 수 없고 변수가 함수 내에서만 유효합니다.

중복 선언이 허용되므로 변수 이름 충돌 문제가 발생할 수 있습니다.

변수 재할당이 자유롭게 가능하므로 의도치 않게 값이 변경될 수 있습니다.

 

let

장점

블록 스코프를 가지므로 변수의 범위를 블록 내로 제한할 수 있습니다.

중복 선언이 허용되지 않아 변수 이름 충돌 문제를 방지합니다.

호이스팅은 발생하지만 초기화가 실행 위치에서 발생하므로 초기화 전에 접근하면 ReferenceError가 발생합니다.

단점

ES6 이후의 환경에서만 사용 가능하며, 오래된 브라우저에서 지원되지 않을 수 있습니다.

변수 재할당이 가능하므로, 의도하지 않은 변수 값 변경이 발생할 수 있습니다.

 

const

장점

상수를 선언할 때 사용되며, 값이 변하지 않음을 보장합니다.

블록 스코프를 가지므로 변수의 범위를 블록 내로 제한할 수 있습니다.

중복 선언이 허용되지 않아 변수 이름 충돌 문제를 방지합니다.

 

단점

초기화 이후에 변수 재할당이 불가능하므로, 값이 필요에 따라 업데이트되지 못할 수 있습니다.

모든 변수를 const로 선언하면 코드의 유연성이 감소할 수 있으며, 불필요한 복잡성을 초래할 수 있습니다.