在这种情况下,lastIndexOf()比indexOf()有何优势?

时间:2018-07-08 22:48:25

标签: javascript indexof google-closure-library lastindexof

以下是Google从闭包库中提取的String.startsWith()的实现:

goog.string.startsWith = function(str, prefix) {
   return str.lastIndexOf(prefix, 0) == 0;
};

我想知道为什么他们会选择lastIndexOf而不是indexOf,原因是:

  1. indexOf在某些情况下快两倍。
  2. 浏览器兼容性是相同的。

这与微优化无关,我确实相信:

return str.indexOf(prefix) == 0;

更简单,更干净,并且比以下更快:

return str.lastIndexOf(prefix, 0) == 0;

在这种情况下,lastIndexOf会更好吗?

1 个答案:

答案 0 :(得分:-3)

测量对于这些类型的问题来说这很酷,我在这里为您创建了一个问题,可能会帮助您回答以下问题:

https://www.measurethat.net/Benchmarks/Show/3384/0/index-vs-lastindexof

因此,indexOf快一点。当然,这确实取决于您正在索引的内容。

IndexOf查找第一个匹配项,lastIndexOf返回最后一个匹配项。综上所述,它们现在比map更好。

不过,老实说,如果Google正在使用它,则可能有充分的理由。