[JS/TIL] let, const키워드와 블록레벨스코프

김재범·2022년 11월 22일
0

JS/TIL

목록 보기
3/3
post-thumbnail

let, const 키워드와 블록레벨스코프

let키워드

  1. 변수 중복선언 금지
  2. 블록레벨스코프
  3. 변수호이스팅
    -> let키워드로 선언한 변수는 변수 호이스팅이 발생하지 않는 것처럼 동작한다.
  • var는 런타임 이전에 자바스크립트 엔진에 의해 암묵적으로 '선언단계' 와 '초기화단계'가 한번에 진행된다. 그러나 let키워드로 선언한 변수는 '선언단계' 와 '초기화단계'가 분리되어 진행된다. 즉, 런타임 이전에 선언은 실행되지만 초기화 단계는 변수 선언문에 도달했을 때 실행된다. 스코프의 시작점부터 초기화 시작지점까지 변수를 참조할 수 없는 구간을 일시적 사각지대라 한다.
  1. 전역객체와 let
  • let키워드로 선언한 전역변수는 전역객체의 프로퍼티가 아니다.
  • 즉, window.foo처럼 접근할 수 없다(var는 선언하면 전역객체 window의 프로퍼티가 됨)

const키워드

  1. 선언과 초기화
  • const로 선언한 변수는 반드시 선언과 동시에 초기화해야 한다.
    (안그러면 에러발생)

ex)

const foo // SyntaxError: Missing initializer in const declaration
  1. 재할당 금지

  2. 상수

  3. const키워드와 객체

  • const키워드로 선언된 변수에 객체를 할당한 경우 값을 변경할 수 있다.

ex)

	const person = {
      name: "Lee"
    }
    person.name = "Kim"
	console.log(person) // { name : "Kim" }

-> 재할당은 불가능하나 프로퍼티 동적생성, 삭제, 변경을 통해 객체 변경이 가능하다

결론
var vs let vs const

  • 변수 선언에는 기본적으로 const 사용
  • let은 재할당이 필요한 경우 한정해서 사용
  • ES6를 사용하면 var키워드 x
  • 변수의 스코프는 최대한 좁게!
profile
지식을 쌓고 있습니다.

0개의 댓글