4

这是谷歌String.startsWith()从闭包库中获取的实现:

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

我想知道他们为什么选择lastIndexOfindexOf以下事实:

  1. indexOf在某些情况下速度是原来的两倍。
  2. 浏览器兼容性是一样的。

这与微优化无关,我真的相信:

return str.indexOf(prefix) == 0;

比以下更简单,更清洁并且碰巧更快:

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

在这种情况下如何lastIndexOf更好?

4

1 回答 1

-3

MeasureThat 对于这些类型的问题非常酷,我在这里为您创建了一个,可能会帮助您回答问题:

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

据此, indexOf 只是快一点。当然,它确实取决于您要索引的内容。

IndexOf 查找第一次出现,lastIndexOf 返回最后一次出现。话虽如此,它们现在的功能要好得多,例如地图。

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

于 2018-07-08T23:27:42.153 回答