반응형
자바스크립트에서 변수 정의 시, 변수 이름 앞에 var혹은 let 키워드를 쓴다 (const도 쓰지만 상수 할당할 때만 쓴다).
예시
var name = 'John'
let name = 'John'
var과 let 차이 1번째
var는 변수 재 선언이 가능.
let는 변수 재 선언이 불가능.
var의 경우
var name = 'John';
var name = 'Doe';
let의 경우
let name = 'John';
let name = 'Doe'; // SyntaxError: Identifier 'name' has already been declared
var과 let 차이 2번째
var는 호이스팅(hoisting)이 가능하다는 것이다 (호이스팅 참조).
let는 호이스팅 불가능.
var의 경우
console.log(name); // undefined
var name = 'John';
let의 경우
console.log(name); // ReferenceError: Cannot access 'name' before initialization
let name = 'John';
var과 let 차이 3번째
var는 접근 범위가 function scope이다 (함수 내에서는 선언한 변수를 어디서나 접근 가능).
let는 접근 범위가 block scope이다 (block에서만 접근 가능. block 예: if문, for문).
if (true) {
var name = 'John';
console.log(name); // 'John'
}
console.log(name); // 'John'
위에 예재를 보면 if문 이후 console.log(name)의 출력 값이 'John'이다.
그 이유는 var의 접근 범위가 function scope이고 호이스팅 때문이다.
동일한 코드로 let 대입 시, if문에서 선언한 변수를 if문 밖에서 접근하니 에러가 난다
(block scope이기 때문에 if문에서만 name 함수 접근 가능).
if (true) {
let name = 'John';
console.log(name);
}
console.log(name); // ReferenceError: name is not defined
결론
var보단 let를 쓰는 것을 추천.
반응형
'코딩 > Javascript' 카테고리의 다른 글
자바스크립트 - String 표현 시 " (큰 따옴표), ' (작은 따옴표), ` (억음 부호) 공통점 & 차이점 (0) | 2023.03.31 |
---|---|
자바스크립트 - Boolean false 값 리스트 (0) | 2022.11.21 |
자바스크립트 - 세미콜론(;) 사용 vs 미 사용 차이 (0) | 2022.10.18 |
자바스크립트 - Hoisting(호이스팅) & TDZ 쉬운 설명 (0) | 2022.10.14 |
자바스크립트 - Comment (주석 처리) (0) | 2022.10.11 |