You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -73,9 +73,9 @@ function f(arg1, ...rest, arg2) { // ...rest 후에 arg2가 있으면 안 됩니
73
73
`...rest`는 항상 마지막에 있어야 합니다.
74
74
````
75
75
76
-
## 'arguments' 변수
76
+
## arguments 객체
77
77
78
-
`arguemnts`라는 특별한 유사 배열 객체(array-like object)를 이용하면 인덱스를 사용해 모든 인수에 접근할 수 있습니다.
78
+
유사 배열 객체(array-like object)인 `arguemnts`를 사용하면 인덱스를 사용해 인수에 접근할 수 있습니다.
79
79
80
80
예시:
81
81
@@ -86,25 +86,25 @@ function showName() {
86
86
alert( arguments[1] );
87
87
88
88
// arguments는 이터러블 객체이기 때문에
89
-
// for(let arg of arguments) alert(arg); 를 사용해 인수를 나열할 수 있습니다.
89
+
// for(let arg of arguments) alert(arg); 를 사용해 인수를 펼칠 수 있습니다.
90
90
}
91
91
92
-
// 2, Julius, Caesar가 출력됨
93
-
showName("Julius", "Caesar");
92
+
// 2, Bora, Lee가 출력됨
93
+
showName("Bora", "Lee");
94
94
95
95
// 1, Bora, undefined가 출력됨(두 번째 인수는 없음)
96
96
showName("Bora");
97
97
```
98
98
99
-
나머지 매개변수는 비교적 최신의 문법입니다. 과거엔 함수의 인수 전체를 얻어내는 방법이 `arguments`를 사용하는 것밖에 없었습니다. 물론 지금도 `arguments`를 사용할 수 있습니다. 오래된 코드를 보다 보면 `arguments`를 만나게 되죠.
99
+
나머지 매개변수는 비교적 최신에 나온 문법입니다. 나머지 매개변수가 나오기 이전엔 함수의 인수 전체를 얻어내는 방법이 `arguments`를 사용하는 것밖에 없었습니다. 물론 지금도 `arguments`를 사용할 수 있습니다. 오래된 코드를 보다 보면 `arguments`를 만나게 되죠.
100
100
101
101
`arguments`는 유사 배열 객체이면서 이터러블(반복 가능한) 객체입니다. 어쨌든 배열은 아니죠. 따라서 배열 메서드를 사용할 수 없다는 단점이 있습니다. `arguments.map (...)`을 호출할 수 없죠.
102
102
103
103
여기에 더하여 `arguments`는 인수 전체를 담기 때문에 나머지 매개변수처럼 인수의 일부만 사용할 수 없다는 단점도 있습니다.
104
104
105
-
따라서 배열 메서드를 사용하고 싶거나 인수 일부만 사용하고자 할 때는 나머지 매개변수를 사용하는 것이 좋습니다.
105
+
따라서 배열 메서드를 사용하거나 인수 일부만 사용할 때는 나머지 매개변수를 사용하는게 좋습니다.
````smart header="화살표 함수는 `arguments` 객체를 지원하지 않습니다."
108
108
화살표 함수에서 `arguments` 객체에 접근하면, 외부에 있는 '일반' 함수의 arguments 객체를 가져옵니다.
109
109
110
110
예시:
@@ -118,11 +118,11 @@ function f() {
118
118
f(1); // 1
119
119
```
120
120
121
-
앞서 배운 바와 같이 화살표 함수는 자체 `this`를 가지지 않습니다. 여기에 더하여 `arguments`객체도 없다는 것을 위 예시를 통해 확인해 보았습니다.
121
+
앞서 배운 바와 같이 화살표 함수는 자체 `this`를 가지지 않습니다. 여기에 더하여 위 예시를 통해 화살표 함수는 `arguments`객체를 지원하지 않는다는 것을 확인해 보았습니다.
122
122
````
123
123
124
124
125
-
## spread 문법 [#spread-syntax]
125
+
## 스프레드 문법 [#spread-syntax]
126
126
127
127
지금까지 매개변수 목록을 배열로 가져오는 방법에 대해 살펴보았습니다.
128
128
@@ -134,7 +134,7 @@ f(1); // 1
134
134
alert( Math.max(3, 5, 1) ); // 5
135
135
```
136
136
137
-
배열 `[3, 5, 1]`가 있고, 이 배열을 대상으로 `Math.max`를 호출하고 싶다고 가정해봅시다.
137
+
배열 `[3, 5, 1]`이 있고, 이 배열을 대상으로 `Math.max`를 호출하고 싶다고 가정해봅시다.
138
138
139
139
아무런 조작 없이 배열을 '있는 그대로' `Math.max`에 넘기면 원하는 대로 동작하지 않습니다. `Math.max`는 배열이 아닌 숫자 목록을 인수로 받기 때문입니다.
140
140
@@ -146,18 +146,18 @@ alert( Math.max(arr) ); // NaN
146
146
*/!*
147
147
```
148
148
149
-
`Math.max (arr[0], arr[1], arr[2])` 처럼 배열 요소를 수동으로 나열하는 방법도 있긴 한데 배열 길이를 알 수 없을 때는 이마저도 불가능합니다. 스크립트가 돌아갈 때 실제 넘어오는 배열의 길이는 아주 길 수도 있고, 아예 빈 배열일 수도 있기 때문입니다. 수동으로 이걸 다 처리하다 보면 코드가 지저분해지겠죠.
149
+
`Math.max (arr[0], arr[1], arr[2])` 처럼 배열 요소를 수동으로 나열하는 방법도 있긴 한데, 배열 길이를 알 수 없을 때는 이마저도 불가능합니다. 스크립트가 돌아갈 때 실제 넘어오는 배열의 길이는 아주 길 수도 있고, 아예 빈 배열일 수도 있기 때문입니다. 수동으로 이걸 다 처리하다 보면 코드가 지저분해지겠죠.
150
150
151
-
*전개 문법(spread syntax)* 은 이럴 때 사용하기 위해 만들어졌습니다. `...`를 사용하기 때문에 나머지 매개변수와 비슷해 보이지만, 전개 문법은 나머지 매개변수와 반대의 역할을 합니다.
151
+
*스프레드 문법(spread syntax)* 은 이럴 때 사용하기 위해 만들어졌습니다. `...`를 사용하기 때문에 나머지 매개변수와 비슷해 보이지만, 스프레드 문법은 나머지 매개변수와 반대되는 역할을 합니다.
152
152
153
-
함수를 호출할 때 `...arr`를 사용하면, 이터러블 객체 `arr`이 인수 목록으로 '확장'됩니다.
153
+
함수를 호출할 때 `...arr`를 사용하면, 이터러블 객체 `arr`이 인수 목록으로 '확장'됩니다.
This way of copying an object is much shorter than `let objCopy = Object.assign({}, obj);` or for an array `let arrCopy = Object.assign([], arr);` so we prefer to use it whenever we can.
270
+
이렇게 스프레드 문법을 사용하면 `let objCopy = Object.assign({}, obj);`, `let arrCopy = Object.assign([], arr);`보다 더 짧은 코드로 배열이나 객체를 복사할 수 있어서 사람들은 이 방법을 선호하는 편입니다.
271
271
272
272
273
273
## 요약
274
274
275
-
`"..."`은 나머지 매개변수나 전개 문법으로 사용됩니다.
275
+
`"..."`은 나머지 매개변수나 스프레드 문법으로 사용할 수 있습니다.
276
276
277
-
나머지 매개변수와 전개 문법은 아래의 방법으로 구분할 수 있습니다.
277
+
나머지 매개변수와 스프레드 문법은 아래의 방법으로 구분할 수 있습니다.
278
278
279
279
- `...`이 함수 매개변수의 끝에 있으면 인수 목록의 나머지를 배열로 모아주는 '나머지 매개변수'입니다.
280
-
- `...`이 함수 호출 시 사용되면 배열을 목록으로 확장해주는 '전개 문법'입니다.
280
+
- `...`이 함수 호출 시 사용되거나 기타 경우엔 배열을 목록으로 확장해주는 '스프레드 문법'입니다.
281
281
282
282
사용 패턴:
283
283
284
284
- 인수 개수에 제한이 없는 함수를 만들 때 나머지 매개변수를 사용합니다.
285
-
- 다수의 인수를 받는 함수에 배열을 전달할 때 전개 문법을 사용합니다.
285
+
- 다수의 인수를 받는 함수에 배열을 전달할 때 스프레드 문법을 사용합니다.
286
286
287
287
둘을 함께 사용하면 매개변수 목록과 배열 간 전환을 쉽게 할 수 있습니다.
288
288
289
-
조금 오래된 방법이긴 하지만 `arguments`라는 반복 가능한 유사 배열 객체를 사용해도 인수 모두를 사용할 수 있습니다.
289
+
조금 오래된 방법이긴 하지만 `arguments`라는 반복 가능한(이터러블) 유사 배열 객체를 사용해도 인수 모두를 사용할 수 있습니다.
0 commit comments