Skip to content

Commit aa90416

Browse files
authored
Create chapter_15.md
1 parent a5a2af3 commit aa90416

1 file changed

Lines changed: 50 additions & 0 deletions

File tree

book/공희재/chapter_15.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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+
끝.

0 commit comments

Comments
 (0)