ES6パラメータオブジェクトの構造解除を使用すると、特定のプロパティの存在を要求することができ、default valuesを指定することもできます。 Dr. Axel Rauschmayerは、Six nifty ES6 tricks articleにおいて、パラメータのデフォルト値が実際に使用された場合にのみ評価されると述べています。パラメータオブジェクト必要な値と空のオブジェクトでの破棄
次の例では、私は理解していないものについてのより多くのコンテキストを提供します:ajax
最初の引数関数の
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);
}
持つ{...} = {}
またはちょうど{...}
は同じ動作をします。だから私が2つのオプションのうちの1つをテストすると、{...} = {}
ロジックが何をするのかを結論づけることはできません。
私はここでの質問は次のとおりです。
はなぜajax
関数の第一引数に空のオブジェクトに等しくなるようにオブジェクトが必要なのでしょうか?
を場合、 '{...} = {}は'あなたの関数のパラメータで、単にデフォルト値を設定します渡された引数は未定義です。 – Phillip
はい、それはなぜ必要なのですか? '{...} = {}'や '{...}'だけには同じ出力があるので、 –
これを行うと想像してください: 'ajax(undefined)'。 destructureは定義されていないので、全体の型チェックは無駄です。だから、最初の引数のデフォルト値を空のオブジェクトにすると、それは非構造化することができます:) – Phillip