Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:为什么要使用indexOf()来匹配字符串中的值?_Javascript_Indexof - Fatal编程技术网

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

Javascript:为什么要使用indexOf()来匹配字符串中的值?,javascript,indexof,Javascript,Indexof,在学习javascript时遇到了如下情况: if (obj.indexOf("someValue") > -1) { do.something(); } 没有发布整个脚本,indexOf()方法仅用于检查字符串中的值 我的问题是,为什么你会这样做,而不是: if (obj.match(/someValue/g)) { do.something(); } 这是为了传统浏览器支持还是出于某种原因而更快?match()使用regex,regex比indexOf()慢我认为原

在学习javascript时遇到了如下情况:

if (obj.indexOf("someValue") > -1) {
    do.something();
}
没有发布整个脚本,indexOf()方法仅用于检查字符串中的值

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

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

这是为了传统浏览器支持还是出于某种原因而更快?

match()
使用regex,regex比
indexOf()慢

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

你可以查一下

仅从上述站点获取代码:

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

var str=“你好,世界!”;
5616069次/s使用匹配所用时间为±3.05%55%较慢

12306269次/s使用indexOf()所用时间为±2.51%最快


一般来说,这实际上更多的是一个品味问题。有些人可能会认为indexOf稍微快一些。

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

当我需要检查现在是否下雨时,我只是看着窗外,而不是打开电视看天气预报


注意:顺便说一句,当
indexOf()
只返回第一个匹配项时,您的“
/g
”进行全局搜索。因此,在您的情况下,
indexOf()
会随着输入字符串变长而变得更快(与
obj.match()
相比)。

因为正则表达式速度较慢。性能可能是答案: