JavaScript RegExp 对象的问题?
<html><body><scripttype="text/javascript">varpatt1=newRegExp("e","g");do{result=patt1...
<html>
<body>
<script type="text/javascript">
var patt1=new RegExp("e","g");
do
{
result=patt1.exec("The best things in life are free");
document.write(result);
}
while (result!=null)
</script>
</body>
</html>
为什么结果是eeeeeenull而不是eeeeee 展开
<body>
<script type="text/javascript">
var patt1=new RegExp("e","g");
do
{
result=patt1.exec("The best things in life are free");
document.write(result);
}
while (result!=null)
</script>
</body>
</html>
为什么结果是eeeeeenull而不是eeeeee 展开
3个回答
展开全部
do...while 循环是 while 循环的变种。
该循环程序在初次运行时会首先执行一遍其中的代码,然后当指定的条件为 true 时,它会继续这个循环。
所以可以这么说,do...while 循环至少执行一遍其中的代码,即使条件为 false,因为其中的代码执行后才会进行条件验证。
现在来分析:
(1):先执行到最后一个e 的时候:
do{
result=patt1.exec("The best things in life are free");
document.write(result);
}
这时页面上的result就是eeeeee
(2):下来继续验证执行
result的值为eeeeee,
while判断result不为空,又继续执行
do{
result=patt1.exec("The best things in life are free");
document.write(result);
}
这时指针已经到了末尾,返回的就是null。
所以document.write(result)就打印了null。
加起来就是eeeeeenull。
这个问题所在就是,你要理解了do while的运行原理。
它是先执行代码,再去验证。
遇到问题不解的时候,可以跟着程序一步一步的去查看,为什么会出现null ,是从哪里出来的,搞清楚了它的“错误”步骤,结合掌握的do while 就会想通了。
希望可以帮到你,^_~
该循环程序在初次运行时会首先执行一遍其中的代码,然后当指定的条件为 true 时,它会继续这个循环。
所以可以这么说,do...while 循环至少执行一遍其中的代码,即使条件为 false,因为其中的代码执行后才会进行条件验证。
现在来分析:
(1):先执行到最后一个e 的时候:
do{
result=patt1.exec("The best things in life are free");
document.write(result);
}
这时页面上的result就是eeeeee
(2):下来继续验证执行
result的值为eeeeee,
while判断result不为空,又继续执行
do{
result=patt1.exec("The best things in life are free");
document.write(result);
}
这时指针已经到了末尾,返回的就是null。
所以document.write(result)就打印了null。
加起来就是eeeeeenull。
这个问题所在就是,你要理解了do while的运行原理。
它是先执行代码,再去验证。
遇到问题不解的时候,可以跟着程序一步一步的去查看,为什么会出现null ,是从哪里出来的,搞清楚了它的“错误”步骤,结合掌握的do while 就会想通了。
希望可以帮到你,^_~
2013-09-06 · 知道合伙人互联网行家
关注
展开全部
要先用while判断条件,再执行do里面的内容。你先do,后while当然是判断之前就已经把null加上去了。改:
while (result!=null){
result=patt1.exec("The best things in life are free");
document.write(result);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个涉及到逻辑问题
因为 当result走到"The best things in life are free“ 最后的一个e的时候,这时候 result=e,result是有值的 然后执行document.write(result);把最后的一个e输入到页面上,会接着往下走,因为result!=null为真,所以while (result!=null)是成立的 继续进入到循环体中。这时候回执行result=patt1.exec("The best things in life are free"); 这时候 result=null,在接下来的document.write(result);中会把null打印到控制台上。在走 while的时候才退出循环。
因为 当result走到"The best things in life are free“ 最后的一个e的时候,这时候 result=e,result是有值的 然后执行document.write(result);把最后的一个e输入到页面上,会接着往下走,因为result!=null为真,所以while (result!=null)是成立的 继续进入到循环体中。这时候回执行result=patt1.exec("The best things in life are free"); 这时候 result=null,在接下来的document.write(result);中会把null打印到控制台上。在走 while的时候才退出循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询