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

在javascript中访问函数参数的最佳方法是什么?,javascript,optimization,Javascript,Optimization,在这些类似的函数定义中,访问参数的最佳方式是什么?为什么 function DoStuff() { return arguments[0] + arguments[1] + arguments[2]; } function DoStuff(first, second, third) { return first + second + third; } 一个分配的内存比另一个少吗?一个比另一个更快地访问参数值吗?第二个 使用第二种方法,您可以根据签名准确地知道调用该方法时所期望

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

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

function DoStuff(first, second, third)
{
    return first + second + third;
}
一个分配的内存比另一个少吗?一个比另一个更快地访问参数值吗?

第二个

使用第二种方法,您可以根据签名准确地知道调用该方法时所期望的结果。它在将来的可维护性方面也要容易得多。

第二


使用第二种方法,您可以根据签名准确地知道调用该方法时所期望的结果。将来的可维护性也要容易得多。

两者之间的性能差异应该可以忽略不计,但是命名参数的可读性是更好的做法。有时您无法使用命名参数,在这种情况下,我通常使用一大块脚本将参数解压为命名局部变量。

两者之间的性能差异应该可以忽略不计,但是命名参数的可读性是一种更好的做法。有时您无法使用命名参数,在这些情况下,我通常使用一大块脚本将参数解压为命名的局部变量。

在这种情况下,忘记性能,追求可读性。从这个角度来看,选项(2)更可取——不过,我会选择更具描述性的名称

在这种情况下,忘掉性能,追求可读性。从这个角度来看,选项(2)更可取——不过,我会选择更具描述性的名称

这是我的测试:

    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;
    }
我认为测试2会更快,但速度要快得多。因此,它不仅可读性更强,而且效率更高。

以下是我的测试:

    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;
    }

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

引用函数中的任何位置都会显著降低许多浏览器的性能。

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

在使用javascript时,无论是哪种类型,这种性能都不应引起您的关注,相关问题:最优的概念只是根据一些最优标准来定义的:)最优=最佳。在这种情况下,似乎没有人关心性能优化方法,只关心可维护性-优化。在使用javascript时,无论是哪种方法,这种事情的性能都不应该是您关心的,相关问题:最优的概念只是根据一些最优标准来定义的:)最优=最佳。在这种情况下,似乎没有人关心性能优化方法,只关心可维护性-优化。这不是问题的答案。一个分配的内存比另一个少吗?一个比另一个更快地访问参数值吗?是。它确实回答了这个问题,尽管不是所有的问题都在帖子中提出。引用参数的最佳方式是最具可读性的方式。不过,你明白问题的重点了吗?这是一个有趣的问题,如果只是从“学术练习”的角度来看的话。@Crescent-Fresh——我不想为此大吵一架,但你明白我回答的要点了吗。内存足迹和速度方面的考虑远远低于良好命名和可读性的重要性,因此,如果可读性较差的版本速度更快,则无关紧要。@Crescent Fresh和其他下层选民注意到,这个问题被标记为“最佳实践”。我很难相信,人们真的觉得专注于这种微观优化实际上更像是一种最佳实践,而不是良好的命名和可读性。这并不是问题的答案。一个分配的内存比另一个少吗?一个比另一个更快地访问参数值吗?是。它确实回答了这个问题,尽管不是所有的问题都在帖子中提出。引用参数的最佳方式是最具可读性的方式。不过,你明白问题的重点了吗?这是一个有趣的问题,如果只是从“学术练习”的角度来看的话。@Crescent-Fresh——我不想为此大吵一架,但你明白我回答的要点了吗。内存足迹和速度方面的考虑远远低于良好命名和可读性的重要性,因此,如果可读性较差的版本速度更快,则无关紧要。@Crescent Fresh和其他下层选民注意到,这个问题被标记为“最佳实践”。我很难相信,人们真的觉得专注于这种微优化实际上是一种比良好的命名和可读性更好的最佳实践。是IE8吗?这说明了我想说的一点——javascript解释器的性能完全不同。而且新的引擎一直都在出现。为了更好地理解这一点,您能否以jQuery为例来衡量实现$(这个)所需的时间?每次调用2ms(即case)实际上会对库编写器产生影响。是IE8吗?这说明了我想说的一点——javascript解释器的性能完全不同。而且新的引擎一直都在出现。为了更好地理解这一点,您能否以jQuery为例来衡量实现$(这个)所需的时间?每次调用2ms(即case)实际上会对库编写器产生影响;下降是否显著取决于您的计划。我希望看到一个非人为的例子,它实际上是重要的…呵呵,是的,它会降低性能;下降是否显著取决于您的计划。我很想看到一个非人为的例子,它实际上很重要。。。