繁体   English   中英

覆盖Javascript函数的参数对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM