a에 값을 안 주었을 때 왜 object가 + 되서 나오는 걸까요?
207
投稿した質問数 3
function sum(a = 0, b = { value: 0 }) {
return a + b.value;
}
sum(b = { value: 10 });
하면 결과가 10이 나올거라 예상했는데, "[object Object]10" 이 나오는데요. default parameter로 a = 0을 줬으면 a에 0이 세팅되어야 한다고 예상했는데 전혀 아닌데요...
回答 1
1
매개변수는 파라미터의 앞부분부터 순차적으로 전달되기 때문에 넘겨진 "b = { value: 10 }" 값은
b 파라미터가 아닌 a 파라미터로 전달되게 됩니다.
따라서 함수 내부에서 a를 출력해보시면, "{ value: 10}" Object가 전달된 것을 확인하실 수 있습니다.
이름을 명시해서 해당 값만 전달하고 싶으시다면, 정의를 조금 변경해서 사용해야 할 것 같습니다.
function sum({a = 0, b = { value: 0 }}) {
return a + b.value;
}
console.log(sum({b: { value: 10 }}));
이렇게 하면 "{ b: { value: 10 } }" Object를 파라미터로 전달하게 되는데,
"{ a = 0, b = { value: 0 } }" Object 파라미터에서 b 키에 값이 맵핑되어
해당 파라미터 값은 "{ a: 0, b: { value: 10 } }"이 됩니다. (a 키의 값은 Default 값에 의해 0)
그렇게 한다면, 의도하는 것과 같이 함수가 10을 반환합니다.
2022년 기준 웹팩 설정하실 때
0
345
0
로또 구현
0
288
0
선생님, arrow 로 활용해서 스크립트 짜봤는데 왜 안될까요? ㅠㅠㅠ
0
258
0
Cannot get 은 무엇이 문제인걸까요?
0
575
0
작업했습니다.
2
239
0
타입 관련 궁금한 점이 있습니다.
1
256
1
Set 사용 안 한 풀이법
0
231
1
로또
0
253
0
이거 링크 없는거 맞죠?
0
196
0
export default 해도
0
206
0
로또 번호 생성 풀이는 없나요??
2
213
0
예제 오류 입니다.
0
194
0
로또 번호 생성기 소스코드
0
341
0
강의에서 사용하시는 툴이 궁금해요
0
266
1
풀이가 없어서
1
251
0
this 바인딩 질문드립니다~
0
242
1
bundle.js 내용이 index.js와 동일합니다
0
738
4
로또 번호 생성기 풀이
0
269
0
전 html 파일을 만들어서 해결해봤습니다.
0
219
0
newArr에 map으로 묶은 fucntion 인자들은 어디서 받아오는 값인가요?
0
202
0
제 답변 올립니다.
0
234
1
ws.has(arr) 문의 입니다.
4
228
2
로또번호 생성기 풀이
0
158
0
왜 이건 유튜브로 나와요?
0
195
0

