모자딥 15장 let, const 키워드와 블록 레벨 스코프

릿·2023년 1월 12일
0

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

15.1 var키워드로 선언한 변수의 문제점


15.1.1 변수 중복 선언 허용

전역변수명과 같은 이름의 지역변수를 함수 내부에 선언하게 되면 먼저 선언된 값이 변경된다.

15.1.2 함수 레벨 스코프

var키워드로 선언한 변수는 전역변수가 된다.

15.1.3 변수 호이스팅

변수 호이스팅에 의해 var키워드로 선언한 변수는 변수 선언문 이전에 참조할 수 있다. (할당문 이전에 참조하면 undefined를 반환함)

15.2 let 키워드


15.2.1 변수 중복 선언 금지

let키워드로 이름이 같은 변수를 중복 선언하면 문법 에러(Syntax Error)가 발생한다.

15.2.2 블록 레벨 스코프

let키워드로 선언한 변수는 모든 코드블록을 지역 스코프로 인정한다.

15.2.3 변수 호이스팅

  • let키워드로 선언한 변수는 변수 호이스팅이 발생하지 않는 것처럼 동작한다.
  • 변수 선언문 이전에 참조하면 참조에러(ReferenceError)가 발생한다.
  • let키워드로 선언한 변수는 "선언 단계"와 "초기화 단계"가 분리되어 진행된다.

15.2.4 전역 객체와 let

1. var키워드

var키워드로 선언한 전역변수, 전역함수는 전역객체 window의 프로퍼티가 된다.

2. let키워드

let키워드로 선언한 전역 변수는 전역객체의 프로퍼티가 아니므로 window.foo와 같이 접근할 수 없다.

15.3 const키워드


15.3.1 선언과 초기화

const키워드로 선언한 변수는 반드시 선언과 동시에 초기화를 해야한다.

15.3.2 재할당 금지

const키워드로 선언한 변수는 재할당이 금지된다.

15.3.3 상수

const의 특징을 이용해 상수를 표현하는 데 사용한다.
※ 상수 : 재할당이 금지된 변수

15.3.4 const 키워드와 객체

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

const person = {
  name: 'Lee'
};

person.name = 'Kim';

15.4 var vs. let vs. const


  • ES6를 사용한다면 var키워드는 사용하지 않는다.
  • 재할당이 필요한 경우 let키워드를 사용하고 변수의 스코프는 최대한 좁게 만든다.
  • 원시값과 객체에는 const키워드를 사용한다.
profile
항상 재밌는 뭔가를 찾고 있는 프론트엔드 개발자

0개의 댓글