这对我来说是一个巨大的惊喜,我想要理解这个结果。我在 jsperf测试 中进行了一项测试,基本上是检查一个字符串(它是URL的一部分,我想要检查)并检查其中是否包含4个项目(实际上,这些项目都包含在字符串中)。
它有5种检查方式:
- 普通的indexOf;
- 拆分字符串,然后使用indexOf;
- 正则表达式搜索;
- 正则表达式匹配;
- 拆分字符串,循环遍历项目数组,然后检查是否与应该匹配的内容相匹配
令我非常惊讶的是,在Chrome 21中,第5种方式是最快的。这是我无法解释的。
在Firefox 14中,普通的indexOf是最快的,这一点我可以相信。
indexOf
会更早地退出,但我可以想象字符串太短了,以至于这没有影响(虽然这并不能解释Firefox的结果 :-/)。 - Felix KlingindexOf
的那个)。indexOf
总是要遍历整个数组直到找到匹配项,而你这样做了四次,所以与你的while
循环只需要一次相比,你可能要遍历整个数组四次。第一个测试用例也是如此(字符串迭代四次)。 - Felix Kling