javaScript 초창기부터 사용되어진 var의 특징은 아래와 같다.
- 변수 이름 중복선언 가능
- 변수 선언 전에 사용 가능(호이스팅)
- 함수 스코프
console.log(name) // undefined
var name = "mingming"
console.log(name) // "mingming"
var 변수를 선언하기도 전에 name을 출력해도 에러가 뜨는 것이 아니라 undefined가 출력되는 것을 확인할 수 있다.
호이스팅은 이와 같이 아래 선언된 코드가 끌어올려지는 것을 의미한다.
대신, 에러는 뜨지 않더라도 제대로 사용하고 싶으면 변수 다음에 출력해주어야 값이 제대로 나온다.
함수 안에서 선언되어진 경우에만 지역 변수로 인정되는 것을 의미한다.
함수가 아닌 if문이나 for문 등에서 선언되어진 var 변수의 경우는 전역 변수로 어디든 사용되어질 수 있다.
ES2015 부터 새롭게 let과 const가 등장했다.
등장 이후부터는 var보다 let, const의 사용이 권장되고있고 특징은 아래와 같다.
- 변수 이름 중복선언 불가 (SyntaxError 발생)
- 변수 선언 전에 사용 불가 (ReferenceError 발생)
- 블록 스코프
코드 블럭을 기준으로 전역/지역 변수가 나뉘어지는 것을 의미한다.
let age = 24;
function sumAge(num) {
let age = 26;
console.log(age) // 26
return num + age;
}
function sumAge()2
console.log(age); // 24
중괄호를 우리는 "코드 블럭"이라고 이야기한다.
코드 블럭 안에서 변수 age가 재선언 되었지만 엄연히 이는 다른 age를 의미한다.
const 키워드는 let 키워드와 다르게 값을 재할당할 수 없다