以前に指定されたオプションのパラメーターに基づいてarguments
aを修正する関数を作成しようとしています。function
私は問題に来ました。arguments
以前に何らかの方法で定義されていない限り、配列を介して変数を設定できないようです。以下のコードは、私が直面している問題の例を示しています。
function foo(a, b, c) {
arguments[0] = "lorem";
arguments[1] = "ipsum";
arguments[2] = "dolor";
console.log([a, b, c]);
}
foo(null); // ["lorem", undefined, undefined]
foo(null, null); // ["lorem", "ipsum", undefined]
foo(null, null, null); // ["lorem", "ipsum", "dolor"]
ただし、結果をログに記録するときarguments
は常に["lorem", "ipsum", "dolor"]
です。
この問題を解決する方法はありますか?
で呼び出された関数はこれらの名前にアクセスできないためa
、b
をc
直接設定することはできません。
私の目標は次のようになります。foo
function foo(a, b, c) {
var rules = [];
// Rule for optional parameter 1 (b)
// If it equals true the value of b is shifted to the next parameter (c)
rules[1] = function(val) { return val !== "ipsum"; };
optionalize(rules);
console.log([a, b, c]);
}
foo("lorem", "dolor"); // ["lorem", undefined, "dolor"];