【发布时间】:2018-12-16 14:32:52
【问题描述】:
以下是 Google 对 String.startsWith() 的实现,取自 Closure 库:
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 在这种情况下如何更好?
【问题讨论】:
-
lastIndexOf应该理论上更快。 -
some quick testing 表明
lastIndexOf()实际上比indexOf()慢 96% -
@SheshankS。 1. 这不是我的问题 2. 在将某些内容标记为重复之前,不仅要阅读问题标题,还要阅读其内容。
-
@SheshankS。可能,但仅仅因为标题共享很少的单词并不意味着问题是重复的。随意建议一个更好的标题。
-
您可能想看看这里:stackoverflow.com/questions/646628/…,以及它下面的解决方案(以及第二个答案)。话虽如此,当您问“我想知道他们为什么选择...” 时,您的问题自动基于意见,因为这是该团队的选择。但是,如果您询问性能差异,我相信我链接的问题是一个很好的重复目标(因为我提到的两个答案)。
标签: javascript indexof google-closure-library lastindexof