以下是Google从闭包库中提取的String.startsWith()
的实现:
goog.string.startsWith = function(str, prefix) {
return str.lastIndexOf(prefix, 0) == 0;
};
我想知道为什么他们会选择lastIndexOf
而不是indexOf
,原因是:
indexOf
在某些情况下快两倍。这与微优化无关,我确实相信:
return str.indexOf(prefix) == 0;
更简单,更干净,并且比以下更快:
return str.lastIndexOf(prefix, 0) == 0;
在这种情况下,lastIndexOf
会更好吗?
答案 0 :(得分:-3)
测量对于这些类型的问题来说这很酷,我在这里为您创建了一个问题,可能会帮助您回答以下问题:
https://www.measurethat.net/Benchmarks/Show/3384/0/index-vs-lastindexof
因此,indexOf快一点。当然,这确实取决于您正在索引的内容。
IndexOf查找第一个匹配项,lastIndexOf返回最后一个匹配项。综上所述,它们现在比map更好。
不过,老实说,如果Google正在使用它,则可能有充分的理由。