📍 변수 선언
자바스크립트는 느슨한 타입(loose typing)을 가진 언어이므로 데이터 타입을 따로 명시하지 않고 변수를 선언.
var, let, const 키워드를 통해 변수를 선언한다.
var
- 재선언 O
: var로 선언된 변수는 기존에 선언된 변수의 값을 덮어쓴다.
var a = 1;
if(true){
var a = 2;
}
console.log(a); // 2
- 함수 스코프
: 변수를 선언한 함수 몸체 안에서만 해당 변수에 접근 가능.
function foo(){
for(var i = 0 ; i<10 ; i++){
//...
}
console.log(i); // 10
}
foo();
❗️반복문의 변수 i를 반복문 밖에서 접근이 가능하다. 이러한 접근은 불필요하며 혼란을 초래❗️
- 선언과 초기화 동시에 ➔ 변수 호이스팅하면 undefined
console.log(a); // undefined
var a = 1;
let과 const
var의 문제점을 해결하기 위해 ES2015에서 등장
- 재선언 X
let a = 1;
let a = 2; // SyntaxError: Identifier 'a' has already been declared
- 블록 스코프
: 변수를 둘러싼 블록{} 안에서만 해당 변수에 접근
{
let a = 1;
}
console.log(a); // ReferenceError: a is not defined
- 선언과 초기화 분리 ➔ 변수 호이스팅하면 Reference Error
console.log(a); // ReferenceError: Cannot access 'a' before initialization
let a = 1;
const는 let과 달리 변경을 허용하지 않는다. ➔ 상수처럼 변하지 않는 값 선언에 사용
let a = 1;
a = 2;
console.log(a); // 2
const b = 1;
b = 2; // TypeError: Assignment to constant variable.
❗️var의 문제점때문에 let과 const를 권장❗️
'Language > JavaScript' 카테고리의 다른 글
[JS] 이미지 전송; base64와 FormData (0) | 2024.04.13 |
---|---|
[JS] 타입과 객체 (0) | 2024.02.28 |
[JS] JavaScript 역사 (0) | 2024.02.26 |
JavaScript 기초와 활용(feat. 조코딩) (0) | 2023.02.18 |