inflearn logo
강의

講義

知識共有

モダンなJavaScript開発のためのES6コース

function default paramaters

a에 값을 안 주었을 때 왜 object가 + 되서 나오는 걸까요?

207

estelcastle0331

投稿した質問数 3

0

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이 세팅되어야 한다고 예상했는데 전혀 아닌데요...

javascript es6

回答 1

1

James Jeon

매개변수는 파라미터의 앞부분부터 순차적으로 전달되기 때문에 넘겨진 "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