File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # Chapter 15 - ` let ` , ` const ` 키워드와 블록 레벨 스코프
2+
3+ ## 1. ` var ` 키워드의 문제점
4+ ` var ` 키워드로 선언한 변수는 다음과 같은 특징이 있으며, 주의를 기울이지 않으면 심각한 문제를 발생시킬 수 있다.
5+
6+ ### 1-1. 변수 중복 선언을 허용
7+ ` var ` 키워드로는 아래처럼 ** 중복 선언을 할 수 있다** .<br >
8+ ` var ` 키워드를 사용할 때 이미 선언된 변수를 모르고 같은 이름으로 중복 선언을 할 경우<br >
9+ 의도치 않게 먼저 선언한 변수 값을 변경해 버리는 부작용이 발생할 수 있다.
10+ ``` javascript
11+ var x = 1 ;
12+ var y = 1 ;
13+
14+ // 같은 스코프에서 중복 선언을 할 수 있다.
15+ var x = 100 ; // 이렇게 초기화문이 있는 변수 선언문은 마치 var 키워드가 없는 것처럼 동작한다.
16+ var y; // 이렇게 초기화문이 없으면 그냥 무시됨.
17+
18+ console .log (x) // 100
19+ console .log (y) // 1
20+ ```
21+
22+ ### 1-2. 함수 레벨 스코프
23+ ` var ` 로 선언한 변수는 오직 함수의 코드 블록만을 지역 스코프로 인정한다.<br >
24+ 아래처럼 코드 블록 안에서 새로 선언한 변수가, 함수 밖에서 ` var ` 로 선언한 변수와 이름이 같다면,<br >
25+ 그 변수는 새로 선언한 변수가 아닌 ** 중복 선언한 전역 변수가 될 뿐** 이다.
26+ ``` javascript
27+ var x = 1 ;
28+
29+ if (true ) {
30+ var x = 10 ; // 여기서 x는 이미 위에 선언한 전역 변수 x가 있으므로, 중복 선언한
31+ }
32+
33+ console .log (x); // 10
34+ ```
35+
36+ ## 2. ` let ` 키워드
37+ ### 2-1. 변수 중복 선언을 금지함
38+ ### 2-2. 블록 레벨 스코프
39+ ### 2-3. 변수 호이스팅
40+
41+ ## 3. ` const ` 키워드
42+ ### 3-1. 선언과 초기화
43+ ### 3-2. 재할당을 금지함
44+ ### 3-3. 상수
45+ ### 3-4. ` const ` 키워드와 객체
46+
47+ ## 4. ` var ` vs. ` let ` vs. ` const `
48+
49+
50+ 끝.
You can’t perform that action at this time.
0 commit comments