Javascript:为什么要使用indexOf()来匹配字符串中的值?

时间:2013-11-26 18:21:09

标签: javascript indexof

学习javascript并遇到类似这样的事情:

if (obj.indexOf("someValue") > -1) {
    do.something();
}

如果不发布整个脚本,indexOf()方法仅用于检查字符串中的值。

我的问题是你为什么这样做而不是:

if (obj.match(/someValue/g)) {
    do.something();
}

这是针对旧版浏览器的支持还是由于某种原因它更快?

4 个答案:

答案 0 :(得分:2)

我认为原因是RegExp match()确实慢于indexOf

您可以查看here

从上面的网站只有代码:

<script>
  var str = "hello world!";
</script>
  

5,616,069 Ops / sec使用匹配时间为±3.05%55%较慢

     

12,306,269 Ops / sec使用 indexOf()时间为±2.51%最快

答案 1 :(得分:1)

match()使用正则表达式,正则表达式比indexOf()慢。

答案 2 :(得分:0)

一般来说,这更像是一种品味问题。有些人可能会争辩说indexOf略快一些。

答案 3 :(得分:0)

嗯,indexOf()是一个简单的字符串搜索,而obj.match()是regExp搜索。这只是两件事。

当我需要检查它是否正在下雨时,我只是向窗外看而不是打开电视并寻找天气预报。

P.S。:当/g仅返回第一次出现时,你的“indexOf()”进行全局搜索。因此,在您的情况下,indexOf()变得更快(与obj.match()相比),因为输入字符串变得更长。