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
展开
 我来答
xiaolan_GG
2013-09-06 · TA获得超过232个赞
知道答主
回答量:45
采纳率:0%
帮助的人:48.9万
展开全部
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 就会想通了。

希望可以帮到你,^_~
ct543
2013-09-06 · 知道合伙人互联网行家
ct543
知道合伙人互联网行家
采纳数:624 获赞数:2136
2000年接触计算机;2002年接触互联网并开始学习黑客技术;有多年编程开发经验以及信息安全项目实践经验。

向TA提问 私信TA
展开全部

要先用while判断条件,再执行do里面的内容。你先do,后while当然是判断之前就已经把null加上去了。改:

while (result!=null){
result=patt1.exec("The best things in life are free");
document.write(result);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
421728862
2013-09-06
知道答主
回答量:19
采纳率:0%
帮助的人:4.2万
展开全部
这个涉及到逻辑问题
因为 当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的时候才退出循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式