[英]Overwriting arguments object for a Javascript function
如果我有以下内容:
// Clean input.
$.each(arguments, function(index, value) {
arguments[index] = value.replace(/[\W\s]+/g, '').toLowerCase();
});
那会是一件坏事吗? 我没有进一步使用该函数中未清理的参数,并且最好不要创建仅用于它们的无用arguments
副本,但是这样做会有负面影响吗?
理想情况下,我会这样做,但是我猜想这会遇到问题,因为arguments
实际上不是数组:
arguments = $.map(arguments, function(value) {
return value.replace(/[\W\s]+/g, '').toLowerCase();
});
感谢您的任何投入。
编辑:我刚刚意识到这两个现在都在它们自己的函数中,因此arguments对象已更改。 在不创建不必要变量的情况下可以执行此操作吗?
我不会想到arguments[i] = value;
由于相同的原因(不是真正的数组)而起作用。
您确实应该考虑将清理后的值分配给新变量:
var cleaned_args = $.map(arguments, function(value) {
return value.replace(/[\W\s]+/g, '').toLowerCase();
});
此处不必引入新变量。 大多数情况下,您无论如何都不会直接对arguments
进行操作(由于其缺点,如您已经发现的那样),而是首先将其转换为实数数组(无论如何都会涉及到新变量)。
关于您的编辑:
是的,第一个将不起作用,因为arguments
是指匿名函数的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.