a에 값을 안 주었을 때 왜 object가 + 되서 나오는 걸까요?
208
작성한 질문수 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
349
0
로또 구현
0
291
0
선생님, arrow 로 활용해서 스크립트 짜봤는데 왜 안될까요? ㅠㅠㅠ
0
260
0
Cannot get 은 무엇이 문제인걸까요?
0
578
0
작업했습니다.
2
241
0
타입 관련 궁금한 점이 있습니다.
1
258
1
Set 사용 안 한 풀이법
0
236
1
로또
0
255
0
이거 링크 없는거 맞죠?
0
198
0
export default 해도
0
208
0
로또 번호 생성 풀이는 없나요??
2
216
0
예제 오류 입니다.
0
196
0
로또 번호 생성기 소스코드
0
343
0
강의에서 사용하시는 툴이 궁금해요
0
268
1
풀이가 없어서
1
253
0
this 바인딩 질문드립니다~
0
246
1
bundle.js 내용이 index.js와 동일합니다
0
740
4
로또 번호 생성기 풀이
0
271
0
전 html 파일을 만들어서 해결해봤습니다.
0
223
0
newArr에 map으로 묶은 fucntion 인자들은 어디서 받아오는 값인가요?
0
205
0
제 답변 올립니다.
0
236
1
ws.has(arr) 문의 입니다.
4
230
2
로또번호 생성기 풀이
0
160
0
왜 이건 유튜브로 나와요?
0
198
0





