使用带有或不带[end]参数的slice()

时间:2015-08-14 11:43:23

标签: javascript slice

使用slice()方法是否有任何性能差异,有或没有最后一个参数[end]?

示例:

var m = ['But', 'Will', 'It', 'Blend', 'Question'];
var r = m.slice(1,3);

OR

var r = m.slice(2);

PS:不是结果,而只是性能问题。

1 个答案:

答案 0 :(得分:1)

此函数在两种情况下都具有线性复杂度(O(n)),无论是仅指定了一个参数,还是两个。这是第一件要考虑的事情。

第二件事是,如果只指定了一个参数,则在默认值(#length)下计算第二个参数(切片的末尾)。因此,您可以将#slice(4)调用#slice(4, #length),而这两者将是相同的。

接下来,当解释器接受此调用并围绕它构建AST时,它必须处理两个值,而不是一个。所以看起来似乎耗费了两倍的时间。但与整个脚本相比,这种开销几乎可以忽略不计。

因此,两者之间的时间没有显着差异。这纯粹是代码可读性的问题。