본문 바로가기
Javascript

Javascript - const, let, var

by 코드뭉치 2023. 5. 16.

 

1️⃣ const, let, var

 

var, let, const는 JavaScript에서 변수를 선언하는 세 가지 키워드

이들은 변수의 유효 범위와 재할당 가능 여부의 차이가 있다.

 

 

2️⃣ var

 

var로 선언된 변수는 함수 스코프를 가지며, 블록 스코프를 무시

따라서 if문의 블록 내에서 변수 um을 재선언했지만, 외부에서도 동일한 변수에 접근할 수 있다.

이러한 동작은 호이스팅(hoisting)이라는 특성 때문에 발생

var um = 'Really';
console.log(um); // 출력: Really

var um = 'How'
console.log(um); // 출력: How

if (true) {
    var um = 'Human name'; // 변수 재선언
    console.log(um); // 출력: Human name
}
console.log(um); // 출력: Human name

 

 

3️⃣ let

 

let은 블록 스코프 변수를 선언

if문 내부에서 선언된 jun 변수는 블록 스코프에만 영향을 미치며, 외부의 jun 변수에는 영향을 주지 않는다.

따라서 블록 외부에서는 처음 선언한 변수 jun에 접근할 수 있다.

let jun = 'Really';
console.log(jun); // 출력: Really

// let jun = 'How' > Uncaught SyntaxError: Identifier 'jun' has already been declared

if (true) {
    let jun = 'Human name'; // 블록 스코프 변수 선언
    console.log(jun); // 출력: Human name
}
console.log(jun); // 출력: Really

jun = 'How'
console.log(jun); // 출력: How

 

 

4️⃣ const

 

const는 블록 스코프 상수를 선언

const로 선언된 변수는 재할당이 금지되어 값이 고정 > sik 변수에 다른 값을 할당하려고 하면 오류가 발생

하지만 블록 스코프 내에서 동일한 이름의 const 변수를 선언하는 것은 허용

블록 외부에서는 처음 선언한 상수 sik에 접근할 수 있다.

const sik = 'Really';
console.log(sik); // 출력: Really

// const sik = 'How' > Uncaught SyntaxError: Identifier 'sik' has already been declared

if (true) {
    const sik = 'Human name'; // 블록 스코프 상수 선언
    console.log(sik); // 출력: Human name
}
console.log(sik); // 출력: Really

// sik = 'How' > Uncaught TypeError: Assignment to constant variable.

 

 

 

더 자세한 내용
https://www.howdy-mj.me/javascript/var-let-const

 

var, let, const의 차이 ⏤ 변수 선언 및 할당, 호이스팅, 스코프

자바스크립트에서 var로 변수 선언이 가능했는데, 왜 const와 let이 나왔으며 이 둘의 사용을 권장할까? 이를 정확하게 알기 위해서는, 변수의 선언 및 할당 과정, 호이스팅, 스코프를 알아야한다. #

www.howdy-mj.me

 

 

'Javascript' 카테고리의 다른 글

프론트 변조  (0) 2023.06.14
toLocaleString()  (0) 2023.06.14
url params  (0) 2023.06.14
[Javascript] truthy, falsy  (0) 2023.06.14
JavaScript - Export와 Import  (5) 2023.05.16

댓글