ES6 매개 변수 개체를 사용하여 구조적 해체를 수행하면 특정 속성의 존재를 요구할 수 있으며 default values을 제공 할 수 있습니다. Dr. Axel RauschmayerSix nifty ES6 tricks article에서 매개 변수 기본값은 실제로 사용될 때만 평가됩니다.매개 변수 개체 필수 값 및 빈 개체를 사용하여 소멸
다음 예제는 이해가 안 무엇에 대한 자세한 내용을 제공합니다 :
function ajax({
type = requireParameter("type"),
url = requireParameter("url"),
data = requireParameter("data"),
success = requireParameter("success"),
error = requireParameter("error"),
isAsync = requireParameter("isAsync")
} = {}) {
console.log(JSON.stringify({
type,
url,
data,
success,
error,
isAsync
}, null, 2));
};
function requireParameter(name) {
throw new Error (`Missing parameter "${name}"`);
}
try {
ajax({
type: "get",
url: "http://my.api.io",
data: {},
success:() => {},
error:() => {},
isAsync: true
});
} catch (e) {
console.warn(e.message);
}
같은 동작을합니다 ajax
첫 번째 인수 기능에 {...} = {}
하거나 {...}
을 가졌어요. 그래서 두 가지 옵션 중 하나를 테스트 할 때 나는 {...} = {}
로직이하는 일을 결론 지을 수 없습니다. 나는 여기에서
질문 :
왜 우리는 ajax
함수의 첫 번째 인수에 비어있는 객체에 동일하게 객체를 필요합니까?
는'{...} = {}'함수의 매개 변수는 단순히 디폴트 값의 경우를 설정 전달 된 인수는 정의되지 않습니다. – Phillip
예,하지만 왜 그게 필요합니까? '{...} = {}'또는 단지'{...} '를 갖는 것은 동일한 출력을 가질 것입니다. –
이렇게하면 'ajax (undefined)'라고 상상해보십시오. destructure undefined를 사용할 수 없기 때문에 전체 유형 검사는 쓸모 없습니다. 그래서 첫 번째 인수의 기본값을 비어있는 객체로 설정하면됩니다. :) – Phillip