728x90
728x90
변수 재선언과 재할당 (var, let, const)
들어가며
- 자바스크립트의 변수(@var@, @let@, @const@)의 재선언과 재할당에 대하여 알아보자.
재선언과 재할당
① @var@
- 재선언 및 재할당이 모두 가능하다.
var sum = add(10, 20);
console.log(sum); // 30
var sum = 100; // 재선언 (가능)
console.log(sum); // 100
sum = 200; // 재할당 (가능)
console.log(sum); // 200
- 하지만 @var@을 사용할 경우, 다음과 같이 호이스팅(Hoisting)이 발생할 수 있다.
var x = 10;
var sum = x + y; // y 변수가 선언되기 전에 실행
var y = 20;
console.log(sum); // NaN 출력 (y가 결정되기 전에 실행 되므로)
'y가 정의되지 않았다'라는 에러가 뜨지 않고, console.log(sum)의 결과가 NaN으로 출력된다. 왜냐하면 자바스크립트 해석기가 var sum = x + y; 부분이 실행되기 전에 var y;를 선언하여 sum의 값이 NaN으로 되었기 때문이다. (호이스팅 발생)
② @let@
- 재선언은 불가능하지만, 재할당은 가능하다.
let sum = add(10, 20);
console.log(sum); // 30
let sum = 100; // 재선언 (불가능)
console.log(sum); // Error: Identifier 'sum' has already been declared
sum = 200; // 재할당 (가능)
console.log(sum); // 200
③ @const@
- 재선언 및 재할당이 모두 불가능하다.
const sum = add(10, 20);
console.log(sum); // 30
const sum = 100; // 재선언 (불가능)
console.log(sum); // Error: Identifier 'sum' has already been declared
sum = 200; // 재할당 (불가능)
console.log(sum); // Error: Assignment to constant variable.
정리
예약어 | 선언하지 않고 사용할 경우 | 재선언 | 재할당 |
@var@ | 오류 없음. (호이스팅 발생) | O | O |
@let@ | 오류 발생 | X | O |
@const@ | 오류 발생 | X | O |
728x90
728x90
'Programming > JavaScript' 카테고리의 다른 글
[JavaScript] JSON(JavaScript Object Notation) 다루기 (0) | 2024.07.05 |
---|---|
[JavaScript] Intl.NumberFormat 객체 (0) | 2024.06.28 |
[JavaScript] 옵셔널 체이닝 연산자(Optional Chaining Operator), null 병합 연산자(Nullish Coalescing Operator) (ES11(ECMAScript2020)) (0) | 2024.05.16 |
[JavaScript] 비동기 프로그래밍(Asynchronous Programming) (0) | 2024.01.24 |
[JavaScript] 스프레드 연산자(Spread Operator) (0) | 2023.12.14 |
[JavaScript] 디스트럭처링(Destructuring) (0) | 2023.12.14 |
[JavaScript] Map / Filter / Reduce / Find / FindIndex / IndexOf / Includes (0) | 2023.12.13 |
[JavaScript] 모듈 시스템 (import/export) (0) | 2023.11.27 |