var 자제 해야 하는 이유.

  1. 함수 레벨 스코프
    • 어떤 함수 외부에 작성되면 전역화 되기 쉬움.
    • for나 if 안에서 선언된 var 변수는 블록 밖에서 참조할 수 있다.
  2. 변수를 중복 선언 가능
    • 이름만 같은 변수들이 생겨 값이 달라질 수 있다.
  3. 호이스팅
    • 선언하기 전에 참조 가능성이 있다.
  4. 전역으로 선언 시 윈도우 전역 객체에 프로퍼티가 된다.
    • var suck = 10;
    • console.log(window.suck) // 10

var의 단점을 정리하면 스코프 범위가 넓어서 생기는 문제와 의도치 않은 사용들로 버그가 발생의 원인이 될 수 있다.

let의 장점

  1. 블록 레벨 스코프
    • 가까운 중괄호 안에서만 유효한 작은 스코프이기 때문에 관리하기 쉽다.
  2. 중복 선언 금지
    • 중복 선언이 금지되어 원하는 값을 유지할 수 있다.
  3. 호이스팅
    • 호이스팅이 되지 않아 선언하기 전에 참조 가능성이 적다.
    • 사실 호이스팅이 되긴한다. (응?)
    • 참고 : TDZ(Temporal Dead Zone)를 검색!

const 장점

  1. 재할당이 금지된다.
    • 변하지 않는 상수를 써야할 때는 const에 할당하면 값이 바뀌지 않아 편하다.
    • ex: const minutes = 60000;
  2. 객체
    • 객체가 const에 할당될 경우 재할당이나 참조를 변경하는 경우는 금지된다.
    • 하지만 프로퍼티의 추가, 삭제, 값의 변경은 가능하다.
const user = { age: 20 };
user.age = 25;
console.log(user); // { age: 25 }
delete user.age;
console.log(user); // {}

정리! 코딩 할때 마음가짐

  1. 변수를 할당 할 때, 우선순위로 const, 만약 재할당이 이루어지면 let 을 사용하자.
  2. var는 잊어버리거나 es6를 사용할 수 없으면 .. ?
  3. 객체에는 const를 사용한다. (객체를 재할당하는 경우는 찾기 힘들다.)

© 2018. All rights reserved.