Başka bir işlevin içinde işlev argümanlarını değiştirmeye çalışıyorum ve sonra onu callee işlevine döndürüyorum. Böyle bir şey çalışıyorum:Bir işlevin argümanlarını başka bir javascript işlevinden değiştirmenin bir yolu var mı?
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');
Ben a
, b
ve c
değişkenlerde değişiklikler istiyoruz.
Neden 'func' içinde' array.map' kullanılmıyor? 'arguments = arguments.map ((argüman) => Number (argüman))' –
@AkshatMahajan Bu bir hataya neden olur. argümanlar bir dizi değil –
Bu iyi uygulama 'arguments [0] = 2' gibi görünmüyor. Muhtemelen argümanları öncelikle bir diziye dönüştürmek istersiniz. '[] .slice.call (arguments)' ya da bir şekilde onları üzerinde [] .map.call (argümanlar, geri arama) ' – elclanrs