Skip to content

Commit db055c0

Browse files
[화살표 함수 다시 살펴보기] 보완
1 parent 87b0d17 commit db055c0

File tree

1 file changed

+18
-18
lines changed
  • 1-js/06-advanced-functions/12-arrow-functions

1 file changed

+18
-18
lines changed

1-js/06-advanced-functions/12-arrow-functions/article.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
화살표 함수는 단순히 함수를 '짧게' 쓰기 위한 용도로 사용되지 않습니다. 화살표 함수는 몇 가지 독특하고 유용한 기능을 제공합니다.
66

7-
자바스크립트를 사용하다 보면 저 멀리 동떨어진 곳에서 실행될 작은 함수를 작성해야 하는 상황을 자주 만나게 됩니다.
7+
자바스크립트를 사용하다 보면 저 멀리 동떨어진 곳에서 실행될 작은 함수를 작성해야 하는 상황을 자주 만나게 됩니다.
88

99
예시:
1010

@@ -14,11 +14,11 @@
1414

1515
이처럼 자바스크립트에선 함수를 생성하고 그 함수를 어딘가에 전달하는 것이 아주 자연스럽습니다.
1616

17-
그런데 이렇게 어딘가에 함수를 전달하게 되면 함수의 컨텍스트를 읽을 수 있습니다. 이럴 때 화살표 함수를 사용하면 현재 컨택스트를 잃지 않아 편리합니다.
17+
그런데 어딘가에 함수를 전달하게 되면 함수의 컨텍스트를 잃을 수 있습니다. 이럴 때 화살표 함수를 사용하면 현재 컨텍스트를 잃지 않아 편리합니다.
1818

19-
## 화살표 함수에는 'this'가 없습니다.
19+
## 화살표 함수에는 'this'가 없습니다
2020

21-
<info:object-methods> 챕터에서 화살표 함수엔 `this`가 없다는 것을 배운 바 있습니다. 화살표 함수 본문에서 `this`에 접근하면, 그 값은 외부에서 가져오게 됩니다.
21+
<info:object-methods> 챕터에서 화살표 함수엔 `this`가 없다는 것을 배운 바 있습니다. 화살표 함수 본문에서 `this`에 접근하면, 외부에서 값을 가져옵니다.
2222

2323
이런 특징은 객체의 메서드(`showList()`) 안에서 동일 객체의 프로퍼티(`students`)를 대상으로 순회를 하는 데 사용할 수 있습니다.
2424

@@ -39,7 +39,7 @@ let group = {
3939
group.showList();
4040
```
4141

42-
예시의 `forEach`에서 화살표 함수를 사용했기 때문에 화살표 함수 본문에 있는 `this.title`은 화살표 함수 바깥에 있는 메서드인 `showList`가 가리키는 대상과 동일합니다. `this.title``group.title`같죠.
42+
예시의 `forEach`에서 화살표 함수를 사용했기 때문에 화살표 함수 본문에 있는 `this.title`은 화살표 함수 바깥에 있는 메서드인 `showList`가 가리키는 대상과 동일해집니다. 즉 `this.title``group.title`같습니다.
4343

4444
위 예시에서 화살표 함수 대신 '일반' 함수를 사용했다면 에러가 발생했을 겁니다.
4545

@@ -61,28 +61,28 @@ let group = {
6161
group.showList();
6262
```
6363

64-
에러는 `forEach`에 전달되는 함수의 `this``undefined` 이어서 발생했습니다. `alert` 함수에서 `undefined.title`에 접근하려 했기 때문에 얼럿창엔 위와 같은 에러가 출력됩니다.
64+
에러는 `forEach`에 전달되는 함수의 `this``undefined` 이어서 발생했습니다. `alert` 함수에서 `undefined.title`에 접근하려 했기 때문에 얼럿 창엔 에러가 출력됩니다.
6565

66-
화살표 함수는 `this` 자체가 없기 때문에 이런 에러가 발생하지 않습니다.
66+
그런데 화살표 함수는 `this` 자체가 없기 때문에 이런 에러가 발생하지 않습니다.
6767

6868
```warn header="화살표 함수는 `new`와 함께 실행할 수 없습니다."
6969
`this`가 없기 때문에 화살표 함수는 생성자 함수로 사용할 수 없다는 제약이 있습니다. 화살표 함수는 `new`와 함께 호출할 수 없습니다.
7070
```
7171
7272
```smart header="화살표 함수 vs. bind"
73-
화살표 함수의 `=>`와 일반 함수를 `.bind(this)`를 사용해서 호출하는 것 사이에는 미묘한 차이가 있습니다.
73+
화살표 함수와 일반 함수를 `.bind(this)`를 사용해서 호출하는 것 사이에는 미묘한 차이가 있습니다.
7474
7575
- `.bind(this)`는 함수의 '한정된 버전(bound version)'을 만듭니다.
76-
- 화살표 함수의 `=>`는 어떤 것도 바인딩시키지 않습니다. 화살표 함수엔 단지 `this`가 없을 뿐입니다. 화살표 함수에서 `this`가 사용된 경우엔 일반적인 변수 검색과 마찬가지로 `this`의 값을 외부 렉시컬 환경에서 찾습니다.
76+
- 화살표 함수는 어떤 것도 바인딩시키지 않습니다. 화살표 함수엔 단지 `this`가 없을 뿐입니다. 화살표 함수에서 `this`를 사용하면 일반 변수 서칭과 마찬가지로 `this`의 값을 외부 렉시컬 환경에서 찾습니다.
7777
```
7878

79-
## 화살표 함수엔 'arguments'가 없습니다.
79+
## 화살표 함수엔 'arguments'가 없습니다
8080

81-
화살표 함수는 일반 함수와는 다르게 모든 인수에 접근할 수 있게 해주는 `arguments` 유사 배열 객체를 지원하지 않습니다.
81+
화살표 함수는 일반 함수와는 다르게 모든 인수에 접근할 수 있게 해주는 유사 배열 객체 `arguments` 지원하지 않습니다.
8282

8383
이런 특징은 현재 `this` 값과 `arguments` 정보를 함께 실어 호출을 포워딩해 주는 데코레이터를 만들 때 유용하게 사용됩니다.
8484

85-
아래 예시에서 데코레이터 `defer(f, ms)`는 함수를 인자로 받고 이 함수를 래퍼로 감싸 반환하는데, 인수로 전달받은 함수를 `ms` 밀리초 후에 호출될 수 있도록 해줍니다.
85+
아래 예시에서 데코레이터 `defer(f, ms)`는 함수를 인자로 받고 이 함수를 래퍼로 감싸 반환하는데, 함수 `f``ms` 밀리초 후에 호출됩니다.
8686

8787
```js run
8888
function defer(f, ms) {
@@ -92,14 +92,14 @@ function defer(f, ms) {
9292
}
9393

9494
function sayHi(who) {
95-
alert('Hello, ' + who);
95+
alert('안녕, ' + who);
9696
}
9797

9898
let sayHiDeferred = defer(sayHi, 2000);
99-
sayHiDeferred("John"); // 2초 후 Hello, John이 출력됩니다.
99+
sayHiDeferred("철수"); // 2초 후 "안녕, 철수"가 출력됩니다.
100100
```
101101

102-
화살표 함수 없이 동일한 기능을 하는 데코레이터 함수를 만들면 다음과 같습니다.
102+
화살표 함수를 사용하지 않고 동일한 기능을 하는 데코레이터 함수를 만들면 다음과 같습니다.
103103

104104
```js
105105
function defer(f, ms) {
@@ -112,7 +112,7 @@ function defer(f, ms) {
112112
}
113113
```
114114

115-
일반 함수에선 `setTimeout` 안의 함수에서 사용할 추가 변수 `args``ctx`를 반드시 만들어줘야 합니다.
115+
일반 함수에선 `setTimeout`에 넘겨주는 콜백 함수에서 사용할 변수 `ctx``args`를 반드시 만들어줘야 합니다.
116116

117117
## 요약
118118

@@ -121,6 +121,6 @@ function defer(f, ms) {
121121
- `this`를 가지지 않습니다.
122122
- `arguments`를 지원하지 않습니다.
123123
- `new`와 함께 호출할 수 없습니다.
124-
- 이 외에도 화살표 함수는 `super`가 없다는 특징도 있는데, 아직 `super`에 대해 배우지 않았기 때문에 챕터에선 해당 내용을 다루지 않았습니다. 화살표 함수와 `super`의 관계는 <info:class-inheritance> 챕터에서 학습할 예정입니다.
124+
- 이 외에도 화살표 함수는 `super`가 없다는 특징도 있는데, 아직 `super`에 대해 배우지 않았기 때문에 이번 챕터에선 해당 내용을 다루지 않았습니다. 화살표 함수와 `super`의 관계는 <info:class-inheritance> 챕터에서 학습할 예정입니다.
125125

126-
화살표 함수는 컨텍스트가 있는 긴 코드보다는 자체 '컨텍스트'가 없는 짧은 코드를 담을 용도로 만들어졌습니다. 그리고 이 목적에 잘 들어맞는 특징을 지닙니다.
126+
화살표 함수는 컨텍스트가 있는 긴 코드보다는 자체 '컨텍스트'가 없는 짧은 코드를 담을 용도로 만들어졌습니다. 그리고 이 목적에 잘 들어맞는 특징을 보입니다.

0 commit comments

Comments
 (0)