Skip to content

Commit 80815bd

Browse files
[변수의 유효범위와 클로저
1 parent 85d9682 commit 80815bd

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

1-js/06-advanced-functions/03-closure/article.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
# 변수의 유효범위와 클로저
33

4-
자바스크립트는 함수 지향 언어입니다. 이런 특징은 개발자에게 많은 자유도를 줍니다. 함수를 동적으로 생성할 수 있고, 생성한 함수를 다른 함수에 인수로 넘길 수 있으며, 생성된 곳이 아닌 곳에서 함수를 호출할 수도 있기 때문입니다.
4+
자바스크립트는 함수 지향 언어입니다. 이런 특징은 개발자에게 많은 자유를 줍니다. 함수를 동적으로 생성할 수 있고, 생성한 함수를 다른 함수에 인수로 넘길 수 있으며, 생성된 곳이 아닌 곳에서 함수를 호출할 수도 있기 때문입니다.
55

66
함수 내부에서 함수 외부에 있는 변수에 접근할 수 있다는 사실은 앞서 학습해서 알고 계실 겁니다.
77

@@ -14,7 +14,7 @@
1414
```smart header="여기선 `let`, `const`로 선언한 변수만 다룹니다."
1515
자바스크립트에서는 3개의 키워드를 사용해 변수를 선언할 수 있습니다. 모던한 방식인 `let`, `const`가 있고, 과거의 잔재인 `var`도 있습니다.
1616

17-
- 이번 주제의 모든 예시에선 `let` 변수를 사용할 예정입니다.
17+
- 이번 주제의 모든 예시에선 `let`으로 선언한 변수를 사용할 예정입니다.
1818
- `const`로 선언한 변수 역시 `let` 변수와 동일하게 동작합니다. 따라서 예시의 `let``const`로 바꿔도 동일한 동작을 기대할 수 있습니다.
1919
- `var``let``const`로 선언한 변수와 몇 가지 중요한 차이가 있습니다. 자세한 내용은 <info:var>에서 다루겠습니다.
2020
```
@@ -27,17 +27,17 @@
2727
2828
```js run
2929
{
30-
// 지역 변수에 몇 가지 조작을 하면, 그 결과를 밖에선 볼 수 없습니다.
30+
// 지역 변수를 선언하고 몇 가지 조작을 했지만 그 결과를 밖에서 볼 수 없습니다.
3131
32-
let message = "Hello"; // 블록 내에서만 변숫값을 얻을 수 있습니다.
32+
let message = "안녕하세요."; // 블록 내에서만 변숫값을 얻을 수 있습니다.
3333
34-
alert(message); // Hello
34+
alert(message); // 안녕하세요.
3535
}
3636
3737
alert(message); // ReferenceError: message is not defined
3838
```
3939

40-
이런 특징은 고유한 작업을 수행하는 코드를 한데 묶는 용도로 활용할 수 있습니다. 블록 안엔 해당 작업을 수행하기 위해 사용된 변수가 들어갑니다.
40+
이런 블록의 특징은 특정 작업을 수행하는 코드를 한데 묶어두는 용도로 활용할 수 있습니다. 블록 안엔 작업 수행에만 필요한 변수가 들어갑니다.
4141

4242
```js run
4343
{
@@ -53,7 +53,7 @@ alert(message); // ReferenceError: message is not defined
5353
}
5454
```
5555

56-
````smart header="블록이 없으면 에러가 발생할 수 있습니다."
56+
````smart header="블록이 없으면 에러가 발생합니다."
5757
이미 선언된 변수와 동일한 이름을 가진 변수를 별도의 블록 없이 `let`으로 선언하면 에러가 발생합니다.
5858
5959
```js run
@@ -81,9 +81,9 @@ if (true) {
8181
alert(phrase); // ReferenceError: phrase is not defined
8282
```
8383

84-
`if` 블록 아래에 있는 `alert`에선 `phrase`에 접근할 수 없기 때문에 위 예시를 실행하면 에러가 발생합니다.
84+
`if` 블록 밖에 있는 `alert` `phrase`에 접근할 수 없기 때문에 위 예시를 실행하면 에러가 발생합니다.
8585

86-
이런 특징은 변수의 범위를 블록 범위, 특히 `if` 분기문 범위로 한정시킬 수 있어서 아주 유용합니다.
86+
이런 특징은 변수의 유효 범위를 블록 범위, 특히 `if` 분기문 범위로 한정시킬 수 있어서 아주 유용합니다.
8787

8888
`if` 뿐만 아니라 `for`, `while` 반복문에서도 동일한 특징이 적용됩니다.
8989

@@ -96,13 +96,13 @@ for (let i = 0; i < 3; i++) {
9696
alert(i); // ReferenceError: i is not defined
9797
```
9898

99-
`let i``{...}` 밖에 있긴 하지만 `for` 옆 괄호 안에서 선언한 변수는 블록 `{...}`에 속하는 코드로 취급된다는 점에서 조금 특별합니다.
99+
참고로 `for`문에서 `for` 옆 괄호 안에서 선언한 변수(예시에서 `let i`)`{...}` 밖에 있긴 하지만 블록 `{...}`에 속하는 코드로 취급됩니다.
100100

101101
## 중첩 함수
102102

103103
함수 내부에서 선언한 함수는 '중첩(nested)' 함수라고 부릅니다.
104104

105-
자바스크립트에선 중첩 함수를 손쉽게 만들 수 있습니다.
105+
자바스크립트에선 손쉽게 중첩 함수를 만들 수 있습니다.
106106

107107
중첩 함수는 아래와 같이 코드를 정돈하는데 사용할 수 있습니다.
108108

@@ -122,9 +122,9 @@ function sayHiBye(firstName, lastName) {
122122

123123
위 예시에서 외부 변수에 접근해 이름 전체를 반환해주는 *중첩* 함수 `getFullName()`은 편의상 만든 함수입니다. 이렇게 자바스크립트에선 중첩 함수가 흔히 사용됩니다.
124124

125-
중첩 함수는 반환될 수 있다는 점에서 흥미롭습니다. 새로운 객체의 프로퍼티 형태로나 중첩 함수 그 자체로 반환되죠. 이렇게 반환된 함수는 어디서든 호출해 사용할 수 있습니다. 물론 이때도 외부 변수에 접근할 수 있다는 사실은 변함없습니다.
125+
중첩 함수는 새로운 객체의 프로퍼티 형태나 중첩 함수 그 자체로 반환될 수 있다는 점에서 흥미롭습니다. 이렇게 반환된 중첩 함수는 어디서든 호출해 사용할 수 있습니다. 물론 이때도 외부 변수에 접근할 수 있다는 사실은 변함없습니다.
126126

127-
아래 함수 `makeCounter`는 숫자를 세주는 '카운터' 함수를 만듭니다. 카운터 함수는 호출될 때마다 다음 숫자를 반환합니다.
127+
아래 함수 `makeCounter`호출될 때마다 다음 숫자를 반환해주는 '카운터' 함수를 만듭니다.
128128

129129
```js run
130130
function makeCounter() {

0 commit comments

Comments
 (0)