선언 키워드 var, let, const

권태형·2023년 3월 2일
0

지식정리

목록 보기
12/72
post-thumbnail

var, let, const에 대해 알아보자

var, let, const는 세가지 모두 javascript에서 변수를 선언하기 위한 키워드이다.

각 키워드에 대한 자세한 내용을 알아보자

var

var 키워드는 변수를 선언할 때 사용하는 가장 오래된 방식이다. var로 선언된 변수는 함수 스코프(function scope)를 갖는다. 함수 스코프란 변수가 선언된 함수 내에서만 유효하며, 함수 외부에서는 접근할 수 없다는 의미를 가진다.

var키워드의 let,const키워드와 다른 차이점으론 var로 선언된 변수는 호이스팅(hoisting)이 일어난는 점이다. 따라서 var로 선언된 변수는 선언하기 전에 참조할 수 있으며, 값이 할당되지 않은 경우 undefined를 반환한다.

console.log(a); // undefined
var a = 'hello';

var키워드로 선언한 변수의 특징은 변수의 중복 선언이 가능하고, 호이스팅 동작이 가능하며, var키워드의 생략을 허용하고, 중복선언이 가능하며, 함수 레벨의 스코프를 가집니다. 이때 전역 함수 외부에서 var키워드로 생성한 변수는 모두 전역변수가 됨으로 전체 어플리케이션의 몸집이 커지면 이 전역변수가 오히려 어디에 어떻게 선언되었는지 파악하기 힘들고 어떻게 쓰였는지 찾아보기 힘들기 때문에 이후 ES6문법에서 let과 const를 도입했다.

let

let으로 선언된 변수는 블록 스코프(block scope)를 갖는다. 블록 스코프란 변수가 선언된 중괄호({}) 내에서만 유효하며, 중괄호 밖에서는 접근할 수 없다는 의미를 가진다. const키워드와 다른 점은 var키워드와 마찬가지로 변수의 재할당이 가능하다는 점이다.

또한 let키워드는 블록범위 함수로 호이스팅 동작이 일어나지 않아 변수를 선언하기 전에 호출하게 되면 에러가 발생한다.

console.log(b); // ReferenceError: foo is not defined
let b = 'hello';

const

const로 선언된 변수는 let으로 선언한 변수와 마찬가지로 블록 스코프를 갖는다. 하지만, let과는 달리 상수(constant)를 선언할 때 사용된다. 상수는 값을 변경할 수 없는 변수를 의미한다(재할당이 불가능하다).

const키워드 또한 let키워드와 마찬가지로 호이스팅 동작이 일어나지 않는다.

const c = 'hello';
c = 'world'; // TypeError: Assignment to constant variable.
profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글