在这些类似的函数定义中,访问参数的最佳方式是什么?为什么?
function DoStuff()
{
return arguments[0] + arguments[1] + arguments[2];
}
function DoStuff(first, second, third)
{
return first + second + third;
}
一个人分配的内存少于另一个吗?访问参数值比另一个更快吗?
答案 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中。