2차_1주차_이서연_회고록 (15장) - 01tjdus/Docs-JS_deepDive_Study GitHub Wiki

[15장]let,const 키워드와 블록 레벨 스코프

var 키워드

1) 변수 중복 선언 허용

var x = 1;
var x = 2;

console.log(x); // 2

var y = 1;
var y; // 무시됨

console.log(y); // 1

2) 함수 레벨 스코프

  • 함수 내부 선언 : 지역변수 간주
  • 함수 외부 선언 : 전역변수 간주
  • 함수 내부에 선언된 변수만 지역 변수로 간주하며 그 외의 나머지는 모두 전역변수로 간주

3) 변수 호이스팅

호이스팅 = 선언한 변수 및 함수가 코드 최상단으로 올라오는 것을 의미


let 키워드

1) 변수 중복 선언 금지

let bar = 123;
let bar = 456; 

// SyntaxError: Identifier 'bar' has already been declared

재할당은 가능하나 var키워드와 다르게 중복 선언 시 에러가 뜸

2) 블록 레벨 스코프

let foo = 1; // 전역 변수
{
let foo = 2; // 지역 변수
let bar = 3; // 지역 변수
}

console.log(foo); // 1
console.log(bar); // ReferenceError: bar is not defined

지역변수는 전역에서 참조 불가

3) 변수 호이스팅

  • 변수 선언문 이전에 참조하면 ReferenceError가 발생
  • 선언단계 초기화 단계(변수 선언문) 분리되어 진행
  • 일시적 사각지대 = 스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간 = 변수 호이스팅이 발생하지 않는 것처럼 보임.

const 키워드

1) 선언과 초기화

  • 선언과 동시에 초기화
  • 변수 호이스팅이 발생하지 않는 것처럼 동작

2) 재할당 금지

선언된 변수의 재할당을 금지했으나 불변은 아님

3) 상수

원시 값처럼 할당된 값을 변경할 수 없음

4) 객체

재할당 없이 직접 객체 변경 가능 -> 이때, 참조 값은 변하지 않음.


회고

처음 시작했던 스터디인 만큼 블로그를 어떤식으로 쓰는게 좋을지를 몰라 애 좀 먹었다. 덕분에 다른 사람들의 블로그도 많이 찾아보고 개념에 대해서도 자세하게 공부할 수 있는 시간이 되었다. 앞으로도 자스를 더 능수능란하게 사용할 수 있도록 노력해야겠다.