对js的对象有一些不明白的地方,求解释?
写的js代码如下:
var myRe=/ab*/g;
var str='abbcdefabh';
var myArray1 = myRe.exec(str);
console.dir(myRe);
console.dir(myRe.lastIndex);
var myArray2 = myRe.exec(str);
console.dir(myRe);
console.dir(myRe.lastIndex);
打印结果如下图:
那么问题来了:
1.为什么两次打印的myRe是一个样子的?
2.为什么两次打印的myRe.lastIndex却是不同的?
求教!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
MDN 官网文档
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec#示例
引用w3school网站上的解释:
lastIndex存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置。
上次匹配的结果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它们都以 lastIndex 属性所指的位置作为下次检索的起始点。这样,就可以通过反复调用这两个方法来遍历一个字符串中的所有匹配文本。
该属性是可读可写的。只要目标字符串的下一次搜索开始,就可以对它进行设置。当方法 exec() 或 test() 再也找不到可以匹配的文本时,它们会自动把 lastIndex 属性重置为 0。
如下图,是我试验的一个demo,三次查找字符串中的a标签,出现的lastIndex值分别为1,5,9。这跟字符串中的a位置是一样的。
当你将lastIndex再重置为0时,下一次执行exec,打印的结果就跟第一次一样了
JavaScript lastIndex 属性