var
var의 범위(scope)는 전역 범위 or 함수 범위이다
함수 외부에서 사용되면 전역 범위
함수 내부에서 사용되면 사용된 함수 내부 범위
var는 재선언될 수 있고, 업데이트 될 수 있다
var test = "TEST VAR 1";
console.log(test); // "TEST VAR 1" 출력
var test = "TEST VAR 2"; // 재선언
console.log(test); // "TEST VAR 2" 출력
test = "TEST VAR 3"; // 업데이트
console.log(test); // "TEST VAR 3" 출력
재선언이 가능하기 때문에 개발자의 실수로 여러 변수를 같은 변수명으로 만들어도 에러가 발생하지 않는다
이전의 변수가 없어져서 문제가 생길 수 있다
var는 호이스팅과 같은 상황에서 의도하지 않은 undefined가 발생할 수 있다
console.log(test);
var test = "TEST VAR";
해당 코드는 호이스팅으로 인해 실질적으로 다음과 같이 실행된다
var test; // undefined로 초기화
console.log(test); // undefined 출력
test = "TEST VAR";
let, const
let과 const의 범위는 블록 범위이다
블록은 중괄호로 바인딩된 부분을 말한다
함수 뿐만 아니라 if, while문 등도 블록 범위를 가진다
let과 const는 둘 다 재선언할 수 없다
let은 업데이트가 가능하다
let test = "TEST LET 1";
console.log(test); // "TEST LET 1" 출력
let test = "TEST LET 2"; // 재선언 오류 출력
test = "TEST LET 2"; // 업데이트
console.log(test); // "TEST LET 2" 출력
const는 업데이트가 불가능하다
- const는 반드시 선언과 초기화를 같이 해줘야 한다
- Object의 경우 Object 자체를 업데이트 할 수 없지만 Object 내의 속성은 업데이트할 수 있다
const test = "TEST CONST 1";
console.log(test); // "TEST CONST 1" 출력
const test = "TEST CONST 2"; // 재선언 오류 출력
test = "TEST CONST 2"; // 업데이트 오류 출력
let, const는 호이스팅에 의해 선언이 맨위로 끌어올려지지만 초기화 되지 않는다
초기화되지 않은 변수를 사용할 때 에러 발생
console.log(test);
let test = "TEST LET"; // 에러 발생
'기본' 카테고리의 다른 글
샤딩 (0) | 2024.03.04 |
---|---|
N+1 문제 (0) | 2024.02.29 |
객체지향 프로그래밍 (0) | 2024.02.23 |
트랜잭션 격리 수준 (0) | 2024.02.21 |
GraphQL (1) | 2023.11.29 |