JS 매개변수 객체는 선택적 매개변수와 매개변수 기본값을 구현합니다
매개변수 생략의 전제는 함수가 전달하려는 매개변수를 식별할 수 있다는 것입니다. 동의
1. 생략된 매개변수 설정 후
2. 매개변수를 생략해도 다른 기능과 모호성이 발생하지 않습니다. (js에는 이런 문제가 없습니다.)
프로그램에서는 정의된 순서대로 매개변수를 전달해야 합니다. 추후 전달되지 않은 내용이 있으면 생략하겠습니다. 중간을 생략하고 싶다면... 죄송합니다. 직접 null 또는 정의되지 않은 값을 전달하세요.
자바스크립트의 경우 간단한 판단으로 매개변수 유형을 식별하여 중간 매개변수를 생략하는 등의 효과를 얻을 수 있습니다.
var set = function(name, date, age) { if (typeof date === "number") { age = date; date = undefined; } // .... }
여기에서는 간단히 유형별로 식별합니다. 더 복잡한 상황에서는 정규식을 사용하여 도메인, URL, 이메일 등을 식별할 수 있지만 말하기가 더 번거롭고 코드 논리가 복잡하고 작성하기가 쉽지 않습니다.
매개변수가 많고 일부 생략이 가능한 경우에는 매개변수 객체를 사용하는 것이 좋습니다.
ES5는 선택적 매개변수 객체를 구현합니다
var CookieUtil = { set: function(args) { var name = args.name; var value = args.value; var expires = args.expires; var path = args.path; var domain = args.domain; var secure = args.secure; // ... } } CookieUtil.set({ name: "name", value: "Nicholas", path: "/books/projs/", domain: "www.wrox.com", expires: new Date("January 1, 2010") });
ES6은 선택적 매개변수 객체를 구현합니다 - 구문 설탕 구조 분해 할당
function doSome({a,b=2,c}){ console.log(a,b,c) } doSome({a:5,c:22}) // 5 2 22