var

image

  • 변수 선언을 여러번 할 수 있다. image
  • hoisting시 선언문 이전에 참조가능하다. ; hoisting(선언문을 해당 스코프의 선두인 것처럼 동작하는 것)
  • 간단하게 변수를 테스트할 땐 편할 수 있지만 코드량이 많아지면 값을 파악하기 힘들다.
  • 외부에서 접근이 가능해 보안에 취약하다.

  • var의 단점을 보완하기 위해 ES6이후 아래의 변수선언 방식이 추가됐다.

let

image image

  • 변수 선언을 여러번 할 수 없다. -> 2번째 let id에 빨간줄이 그어진 이유
  • hoisting시 선언문 이전에 참조 불가능하다. -> 처음 console.log는 변수 선언문 전에 나와 에러가 남
  • 이는 let이 변수의 생성단계가 var와 다르기 때문이다.
  • var: 변수선언, 초기화> 할당; 선언과 초기화가 한번에 VS let: 변수선언 > 초기화 > 할당; 선언과 초기화 단계가 분리
  • 즉 메모리 공간확보와 undefined로 초기화가 되지 않아 hoisting이 불가능한 것!

image

  • 단 재할당은 가능하다. -> 위 경우에 재할당된 자바스크립트가 log에 찍힌다.

const

image

  • 변수 선언도 1번 할당도 1번만 가능하다.
  • 보안에 유리

변수 선언 방식 선택

  • 일단 보안에 취약하고 값을 일정하게 유지하는데 단점이 있는 var는 배제
  • 기본적으로 const를 사용하고 재할당이 필요한 경우에 let을 사용하는 것이 좋다.

참조

< https://www.howdy-mj.me/javascript/var-let-const/ > < https://poiemaweb.com/es6-block-scope >

카테고리:

업데이트:

댓글남기기