学习javascript并遇到类似这样的事情:
if (obj.indexOf("someValue") > -1) {
do.something();
}
如果不发布整个脚本,indexOf()方法仅用于检查字符串中的值。
我的问题是你为什么这样做而不是:
if (obj.match(/someValue/g)) {
do.something();
}
这是针对旧版浏览器的支持还是由于某种原因它更快?
答案 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()
相比),因为输入字符串变得更长。