자바스크립트 ES6 버전에서 변수를 선언하기 위해 let과 const라는 새로운 예약어가 등장했습니다.
우선 let과 const를 살펴보기 전에 변수의 적용 범위 먼저 살펴보도록 하겠습니다.
변수의 적용 범위
변수의 범위는 변수에 액세스하고 사용할 수 있는 코드의 영역을 나타냅니다. 범위를 이해하는 것은 변수에 액세스하고 수정할 수 있는 위치를 제어하기 때문에 신뢰할 수 있고 유지 관리 가능한 코드를 작성하는 데 중요합니다.
변수를 선언하고 변수가 적용되는 범위를 스코프(Scope)라고 합니다. 변수에는 지역변수와 전역변수 2가지의 주요 유형의 범위가 있습니다.
지역변수(Local Variable)
지역변수, 다른 말로 로컬 변수라고도 불리는 이것은 함수 또는 블록 내에서 선언된 변수는 로컬 범위를 가집니다. 특정 함수 또는 블록 내에서만 액세스할 수 있으며 해당 범위 밖의 코드 부분에서는 볼 수 없습니다.
쉽게 말해 지역변수는 한 함수 안에서만 사용할 수 있는 변수를 지역변수라고 합니다.
전역변수(Global Variable)
전역변수, 다른 말로 글로벌 변수라고 불리는 이것은 소스 전체에서 사용할 수 있는 변수를 말합니다.
var 변수의 특징
함수 범위: "var"로 선언된 변수는 함수 범위이므로 선언된 함수 내에서만 액세스할 수 있습니다. 변수가 함수 내에서 선언되면 해당 함수 외부에서 액세스할 수 없습니다.
호이스팅: "var"를 사용하는 변수 선언은 실행 단계에서 해당 범위의 맨 위로 호이스팅됩니다. 이렇게 하면 선언되기 전에 변수를 사용할 수 있지만 코드에서 할당이 발생할 때까지 정의되지 않습니다.
재선언 허용: "var"로 선언된 변수는 오류 없이 동일한 범위 내에서 재선언할 수 있습니다.
let과 constant를 사용한 변수의 특징
var 예약어를 빠뜨리면 의도와는 다르게 전역 변수가 되기도 하고, 프로그램 길이가 길어지면 실수로 변수를 재선언하거나 값을 재할당하는 경우가 생기기도 합니다. 그래서 ES6 버전에서부터 변수를 선언하는 예약어로 let과 const가 추가되었고 되도록이면 let 예약어를 사용할 것을 권장하고 있습니다.
var과 let, const의 큰 차이점은 스코프 범위입니다. var는 함수 영역의 스코프를 가지지만 let과 const는 블록 영역의 스코프를 가집니다.
let 특징
블록 범위: "let"으로 선언된 변수에는 블록 범위가 있습니다. 즉, 선언된 블록 내에서만 액세스할 수 있습니다(블록은 일반적으로 중괄호 {}로 표시됨). 변수가 if 문이나 루프 내에서 선언되면 해당 블록 외부에서 액세스할 수 없습니다.
호이스팅: "let"을 사용한 변수 선언도 호이스팅되지만 실제 선언문을 만나기 전까지는 초기화되지 않습니다. 따라서 선언 전에 변수를 사용하면 ReferenceError가 발생합니다.
재선언 금지: "let"으로 선언한 변수는 같은 범위 내에서 재선언할 수 없습니다. 이렇게 하면 오류가 발생합니다.
const 특징
블록 범위: "const"로 선언된 변수는 "let"과 마찬가지로 블록 범위입니다.
상수 값: "const"로 선언된 변수의 값은 초기화되면 변경하거나 재할당할 수 없습니다. 그러나 변수가 개체 또는 배열인 경우 개체/배열의 속성 또는 요소는 여전히 수정할 수 있습니다.
호이스팅: "let"과 마찬가지로 "const" 선언은 해당 범위의 맨 위로 호이스팅되지만 실제 선언문을 만나기 전까지는 초기화되지 않습니다.
재할당 불가: "const"로 선언된 변수는 재할당 또는 재선언이 불가능합니다.
틀린 부분이 있거나 더 좋은 내용 훈수 환영합니다!
공감과 댓글 부탁드립니다.
'JavaScript' 카테고리의 다른 글
[자바스크립트] 객체와 객체를 이용한 프로그램 (2) | 2023.07.29 |
---|---|
[자바스크립트] 익명 함수, 즉시 실행 함수, 화살표 함수 (0) | 2023.07.25 |
[자바스크립트] 함수와 함수를 이용한 프로그램 (0) | 2023.07.20 |
[자바스크립트] 제어문(2) (0) | 2023.07.10 |
[자바스크립트] 제어문(1) (4) | 2023.07.09 |