강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của estelcastle0331
estelcastle0331

câu hỏi đã được viết

Khóa học ES6 để phát triển JavaScript hiện đại

tham số mặc định của hàm

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

Viết

·

197

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

javascriptes6

Câu trả lời 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을 반환합니다.

Hình ảnh hồ sơ của estelcastle0331
estelcastle0331

câu hỏi đã được viết

Đặt câu hỏi