​这两种写法都会造成死循环,输出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。如下图所示:

https://img.mukewang.com/climg/62fb62680963a6ee13380564.jpg

如果本地没问题不用修改,有问题的话,就添加上

2、因为while条件中的(/\d+/g).exec('abc123ef456fa789fa')的结果永远不是false,导致跳不出while循环,进入了死循环。

为了方便理解,直接输出结果,方便对比测试理解下,示例:

(1)每次循环,相当于新建正则匹配新的字符串了,所以每次匹配的结果都是123,

https://img.mukewang.com/climg/62fb630a09b68f5c18101136.jpg

(2)先声明正则表达式和字符串,之后就是使用同一个正则表达式针对同一个字符串进行匹配,匹配不到时,返回null,如下图所示:

https://img.mukewang.com/climg/62fb63be094586c217961036.jpg

null转为布尔值为false,不满足while循环,就会退出while循环了。

祝学习愉快~


0

0 学习 · 17877 问题

查看课程