我正在尝试编写一个基于先前指定的可选参数更正 a 的arguments
函数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"];