본문 바로가기

JavaScript/Information

[JavaScript] var, let, const의 차이점은?

 

 

 

 

 

 

 

 

 

 

var란?

- var로 선언된 변수는 선언된 함수 내에서만 접근이 가능합니다.

- 함수 외부에서 선언된 경우, 전역 변수가 됩니다.

- var로 선언된 변수는 선언 전에 사용할 수 있습니다. 코드의 최상단으로 끌어올려지는 자바스크립트의 동작 방식 때문입니다.

- 새로운 값으로 재할당이 가능합니다.

 

장점

1. 호이스팅이 가능하므로 선언전에 변수를 사용할 수 있습니다.

2. 전역 변수와 함수 스코프 변수를 선언하는데 사용할 수 있습니다.

 

단점

1. 함수 스코프로 인해 버그가 발생할 수 있습니다.2. 동일한 이름의 변수를 재선언하면 값이 덮어씌워지고, 호이스팅으로 인해 가독성이 떨어질 수 있습니다.

 

*호이스팅: 변수나 함수 선언이 취상단으로 끌어올려지는 현상

 

 

let이란?

- let으로 선언된 변수는 블록(중괄호 {} 내부)에서만 접근이 가능합니다.

- var와는 다르게 선언전에 사용할 수 없습니다.

- 새로운 값으로 재할당이 가능합니다.

 

장점

1. 블록 스코프로 인해 예측이 가능하고 이해하기 쉬어집니다.2. 재할당이 가능하므로 변경 가능한 값을 다루는데 적합합니다.

 

단점

1. 재선언이 불가능하므로 실수로 동일한 이름의 변수를 선언할 경우 오류가 발생합니다.2. 호이스팅은 가능하지만 TDZ로 인해 선언 전에 변수를 사용하면 버그가 발생할 수 있습니다.

 

*블록 스코프: 중괄호({})로 둘러싸인 코드 블록 내에서만 변수가 유효한 범위를 의미합니다.*TDZ: '임시적 사각지대'라는 뜻으로, 변수가 호이스팅된 위치와 변수가 선언된 위치 사이의 코드 영역을 의미합니다.

 

const란?

- const도 let과 같이 선언된 블록에서만 접근이 가능합니다.- const도 선언 전에는 사용할 수 없습니다.- var와 let가는 다르게 재할당이 불가능합니다. 한번 값을 할당한 후에는 값을 바꿀 수 없습니다. 하지만 객체나 배열과 같은 참조형 데이터를 const로 선언한 경우 내부의 속성이나 요소는 변경할 수 있습니다.

 

장점

1. 블록 스코프로 인해 코드가 예측이 가능하고 이해하기 쉽습니다.2. 재할당이 불가능하므로 한번 선언하고 값이 변하지 않아 상수를 다루는데 적합합니다.

 

단점

1. 일단 값이 할당되면 변경할 수 없으므로 추후 변경할 값을 다루는 데에는 적합하지 않습니다.2. let과 동일하게 TDZ선언 전에 변수를 사용하면 버그가 발생할 수 있습니다.

 

 

 

 

감사합니다.

 

 

 

반응형