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) 객체
재할당 없이 직접 객체 변경 가능 -> 이때, 참조 값은 변하지 않음.
회고
처음 시작했던 스터디인 만큼 블로그를 어떤식으로 쓰는게 좋을지를 몰라 애 좀 먹었다. 덕분에 다른 사람들의 블로그도 많이 찾아보고 개념에 대해서도 자세하게 공부할 수 있는 시간이 되었다. 앞으로도 자스를 더 능수능란하게 사용할 수 있도록 노력해야겠다.