死循环:while(reg.exec(str))和while(result=reg.exec(str))有什么区别,我看了之前那个同学的提问,但是没明白老师说的
// exec方法
var str = 'abc123def456ghi789'
var reg = /\d+/g
while(reg.exec(str)){
console.log(reg.exec(str))
}
28
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕久久
2022-02-24 16:40:13
同学你好,解答如下:
1、二者区别在于,while(result=reg.exec(str))不仅执行了reg.exec(str),还把reg.exec(str)的结果赋值了变量result,即还有赋值操作:
至于这个赋值操作有什么用,要具体代码具体分析了。除了赋值语句这个区别外,从正则的效果上看,二者没区别。
2、之所以进入死循环,是因为while条件中的reg.exec(str)的结果永远不是false,导致跳不出while循环。为了方便讲解,可以改造一下代码:
var str = 'abc123def456ghi789' var reg = /\d+/g // 强制让while循环,只执行10次(循环10次,就强制退出) var result=1 // 设置一个变量,保存while中的reg.exec(str)的结果是什么 var test while (test=reg.exec(str)) { //这里用到了赋值语句 // 打印看一下while中的reg.exec(str)结果是什么 console.log("while中的正则结果是:",test); // 这是while中本来有的打印 console.log("while中本来有的正则打印结果是:",reg.exec(str)) // 让result计数 result++ // 循环了10次,强制结束while循环(防止死循环) if(result==10){ break } }
运行结果如下:
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星