let & const
- let
- 기존의 var같은 자료형
- 변수 재선언 불가
- 변수 재할당 가능
- 사용 예시
//예시 - var의 경우)
var str = "test";
var str = "example";//에러 없음
//예시 - let의 경우)
let str = "test";
let str = "example";//에러 발생
- const
- 변수 재선언 불가
- 변수 재할당 특정 상황에 한해서 가능
- 사용 예시
//예시 - 기본적인 변수의 경우)
const str = "test";
const str = "example";//에러 없음
str = "example";//에러 없음
//예시 - 객체의 경우)
const str = {
text : "test"
};
str.name = "example";//에러 없음
※ 기본적인 변수는 왠만하면 const를 쓰고, 재할당할 변수만 let을 하는게 좋다.
Dead Zone
- 호이스팅 (Hoisting)
- 자바스크립트가 프로그램을 실행하기 전에
var 선언문이나 function 선언문 등을
해당 스코프의 선두로 옮긴 것처럼 동작하는 특성 - 사용 예시
- 자바스크립트가 프로그램을 실행하기 전에
/* var 때문에 생겨나는 호이스팅의 문제점 */
//아래와 같은 코드가 있다고 가정
console.log(str);
var str = "test";
//자바스크립트는 내부에서 다음과 같이 변환
var str;
console.log(str);//출력 : undefined
str = "test";
//위의 코드에서는 원래 undefined가 나오면 안된다.
//원래는 에러가 발생해야 되지만 호이스팅에 의해서 undefined가 발생한다.
Block Scope
- let과 const의 경우에는 블록 내부에서만 사용이 가능하다.
- 사용 예시
if(true){ let test = "test";}
console.log(test); //에러 발생
- var의 경우에는 블록 내부/외부 상관없이 간섭이 가능하다.
- 사용 예시
if(true){ var test = "test";}
console.log(test); //출력 : test;
※ 함수의 경우에는 var도 내부/외부 구분이 가능은 하지만
코딩의 실수로 간섭이 발생할수 있기 때문에
왠만하면 let과 const를 사용하는 것이 낫다.