这两种写法都会造成死循环,输出result始终是123,为什么不能简写呢?
来源:1-1 课程简介
慕盖茨9186416
2022-08-16 17:02:59
var result;
while(result = ('\\d+','g').exec('abc123ef456fa789fa')){
console.log(result);
}
或者 while(result=(/\d+/g).exec('abc123ef456fa789fa')){
……
}
1回答
好帮手慕慕子
2022-08-16
同学你好,问题解答如下:
1、不确定是否是粘贴格式导致的,第一个正则表达式书写不正确,缺少构造函数RegExp。如下图所示:
如果本地没问题不用修改,有问题的话,就添加上
2、因为while条件中的(/\d+/g).exec('abc123ef456fa789fa')的结果永远不是false,导致跳不出while循环,进入了死循环。
为了方便理解,直接输出结果,方便对比测试理解下,示例:
(1)每次循环,相当于新建正则匹配新的字符串了,所以每次匹配的结果都是123,
(2)先声明正则表达式和字符串,之后就是使用同一个正则表达式针对同一个字符串进行匹配,匹配不到时,返回null,如下图所示:
null转为布尔值为false,不满足while循环,就会退出while循环了。
祝学习愉快~
相似问题