我正在尝试更改另一个函数内的函数参数,然后将其返回给callee函数。我正在尝试这样的事情:
function func(a,b,c) {
console.log(arguments, a, b, c); //[1, true, "a"] 1 true "a"
arguments[0] = 2;
console.log(arguments, a, b, c); //[2, true, "a"] 2 true "a"
arguments = ArgumentsToNumber.apply(this, arguments);
console.log(arguments, a, b, c); //[2, 1, NaN] 2 true "a"
}
function ArgumentsToNumber() {
for (let i = 0; i < arguments.length; i++) {
arguments[i] = Number(arguments[i]);
}
return arguments;
}
func(1, true, 'a');
我希望对a
,b
和c
变量进行更改。
答案 0 :(得分:1)
您必须传递Arguments对象本身,而不是像apply
中那样使用它作为数组:
function func(a, b, c) {
console.log(a, b, c); // 1, true, "a"
arguments[0] = 2;
console.log(a, b, c); // 2, true, "a"
argumentsToNumber(arguments);
console.log(a, b, c); // 2, 1, NaN
}
function argumentsToNumber(args) {
for (let i = 0; i < args.length; i++)
args[i] = +args[i];
}
func(1, true, 'a');
请注意,更改另一个函数中的参数会导致性能下降。