在javascript中访问函数参数的最佳方法是什么?

时间:2009-11-17 18:38:55

标签: javascript optimization

在这些类似的函数定义中,访问参数的最佳方式是什么?为什么?

function DoStuff()
{
    return arguments[0] + arguments[1] + arguments[2];
}

function DoStuff(first, second, third)
{
    return first + second + third;
}

一个人分配的内存少于另一个吗?访问参数值比另一个更快吗?

5 个答案:

答案 0 :(得分:9)

这是我的测试:

    function Test1()
    {
        var start = new Date();
        for (var i = 0; i < 1000000; i++)
        {
            DoStuff1(i, i + 1, i + 2);
        }
        var done = new Date();

        alert(done - start);
    }

    function Test2()
    {
        var start = new Date();
        for (var i = 0; i < 1000000; i++)
        {
            DoStuff2(i, i + 1, i + 2);
        }
        var done = new Date();

        alert(done - start);
    }

    function DoStuff1()
    {
        var result = arguments[0] + arguments[1] + arguments[2];
    }

    function DoStuff2(first, second, third)
    {
        var result = first + second + third;
    }

结果如下:

IE      FF

Test1()
2355    402
2381    395
2368    392

Test2()
504     6
507     7
505     7

我认为测试2会更快但速度却快得多。因此,它不仅更具可读性,而且效率更高。

答案 1 :(得分:7)

在这种情况下忘记性能并寻求可读性。从这个角度来看,选项(2)是首选 - 但是,我会选择更具描述性的名称。 ; - )

答案 2 :(得分:2)

第二个。

使用秒,您可以根据签名确切地知道调用方法时的预期结果。它在未来的可维护性方面也要容易得多。

答案 3 :(得分:2)

在函数中的任何位置引用arguments[]都会显着降低许多浏览器的性能。

答案 4 :(得分:0)

两者之间的性能差异应该可以忽略不计,但是命名参数的可读性是更好的做法。有些时候你不能使用命名参数,在这种情况下,我通常会使用一大块脚本来将参数解压缩到命名的locals中。