4-2 let, constant 변수 선언
변수가 적용되는 범위를 스코프(scope)라고한다. 변수는 두가지 범위가 있다.
- 지역 변수(로컬 변수, Local Variable) : 한 함수 안에서만 사용 가능
지역 변수를 선언할 때 var 예약어를 사용한다.
var localVar = 10; // 전역 변수 선언
function exampleFunction() {
var localVar = 20; // 지역 변수 선언
}
//여기서 localvar에 접근할 수 없음
위 내용을 웹브라우저에서 열어본다면 값은 10으로 표시된다.
※ 지역변수는 전역변수에 영향을 주지 않지만 지역변수와 전역변수가 이름이 같다면 나중에 헷갈릴 수 있으니 변수 이름은 다르게 하는 것이 좋다.
- 전역 변수(글로벌 변수, Global Variable) : 스크립트 소스 전체에서 사용 가능
변수를 한번 선언하고 나면 그 값을 계속 유지한다.
var globalVar = 10; // 글로벌 변수 선언
function exampleFunction() {
globalVar = 20; // 글로벌 변수를 수정
}
위와 같이 var를 붙이지 않은 경우 위 문서를 열었을 때 globalvar은 20으로 표기된다.
위에서 사용한 var을 사용한 변수에는 특징과 단점이 있다.
먼저 첫번째, 호이스팅: var로 선언한 변수는 호이스팅(hoisting) 현상이 발생한다. 호이스팅은 변수 선언이 해당 스코프의 맨 위로 끌어올려지는 현상을 의미한다. 따라서 변수를 선언하기 전에 사용할 경우, 정의되지 않은 값이 나올 수 있으며, 이는 예기치 않은 동작을 유발할 수 있다.
두번째, 재선언 가능: var로 선언한 변수는 같은 이름으로 여러 번 선언할 수 있습니다. 이는 코드의 오류 가능성을 높일 수 있습니다.
이러한 단점들이 있어 ES6에서 변수를 선언하기 위한 예약어 let, constant가 추가되었다.
let, constant를 사용한 변수의 특징
let
1. 블록 스코프를 가진다. : {} 중괄호 내에서 선언된 변수는 해당 블록 내에서만 유효하다.
2. 객체나 배열의 내용은 변경 가능하지만 새로운 값을 할당할 수는 없다. 이로인해 var을 사용했을 때 할 수있는 실수를 하지 않을 수 있다.
3. 호이스팅이 없다. let 예약어를 사용한 변수는 선언하기 전에 사용할 경우 오류 메세지를 나타낸다.
const 변수 - const로 선언한 변수는 프로그램 안에서 변하지 않는 값, 상수 이다.
1.const로 할당한 변수는 재선언, 재할당 불가능
2. 블록 스코프를 가진다.