使用slice()方法是否有任何性能差异,有或没有最后一个参数[end]?
示例:
var m = ['But', 'Will', 'It', 'Blend', 'Question'];
var r = m.slice(1,3);
OR
var r = m.slice(2);
PS:不是结果,而只是性能问题。
答案 0 :(得分:1)
此函数在两种情况下都具有线性复杂度(O(n)
),无论是仅指定了一个参数,还是两个。这是第一件要考虑的事情。
第二件事是,如果只指定了一个参数,则在默认值(#length
)下计算第二个参数(切片的末尾)。因此,您可以将#slice(4)
调用#slice(4, #length)
,而这两者将是相同的。
接下来,当解释器接受此调用并围绕它构建AST时,它必须处理两个值,而不是一个。所以看起来似乎耗费了两倍的时间。但与整个脚本相比,这种开销几乎可以忽略不计。
因此,两者之间的时间没有显着差异。这纯粹是代码可读性的问题。