js String.exec()方法解疑?

曹超 发布于 2013/03/04 20:09
阅读 226
收藏 0
var r; var str = "cao#chao#"; var p = /#/g; while((r= p.exec(str)) != null) { console.log(r.index) }
3
8
undefined
var r; var str = "cao#chao#"; while((r= /#/g.exec(str)) != null) { console.log(r.index) }
179926 3

只因为表达式声明在循环条件中,居然跑出了死循环。求解释。
加载中
0
H
HanYuFeng
个人猜测原因在于第二个循环,每一次循环都会生成一个 值为/#/的正则对象。每次exec()都会返回3,所以就死循环。
0
曹超
曹超

引用来自“HanYuFeng”的答案

个人猜测原因在于第二个循环,每一次循环都会生成一个 值为/#/的正则对象。每次exec()都会返回3,所以就死循环。
是的,应该是每次新生成一个正则表达式,lastIndex都从0开始算起了。。。
返回顶部
顶部