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

Mat*_*hew 1 javascript optimization

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

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

function DoStuff(first, second, third)
{
    return first + second + third;
}
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*hew 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;
    }
Run Code Online (Sandbox Code Playgroud)

结果如下:

IE      FF

Test1()
2355    402
2381    395
2368    392

Test2()
504     6
507     7
505     7
Run Code Online (Sandbox Code Playgroud)

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

  • 我想知道是否有人会回答问题. (2认同)

tva*_*son 7

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

  • @Crescent Fresh - 和其他downvoters - 注意到这个问题被标记为"最佳实践".我很难相信人们真的觉得专注于这种微优化实际上是一种最佳实践,而不是良好的命名和可读性. (3认同)
  • 是.虽然不是在帖子中提出的所有问题,但它确实回答了**问题.引用参数的最佳方式是最易读的方式. (2认同)