代码执行卡死

代码执行卡死

var i = 0, sum = 0;
while (i<=100){
i+=2;
if (i==22 || i==44 || i==66 || i==88){
continue;
}
sum += i;
document.write(i+'<br/>');
}
document.write(sum);

上面这段代码跟下面这段代码:

var i = 0, sum = 0;
while (i<=100){
if (i==22 || i==44 || i==66 || i==88){
continue;
}
i+=2;
sum += i;
document.write(i+'<br/>');
}
document.write(sum);

这两段代码除了i+=2的位置不一样,其他几乎都一样,可是为什么第二段代码在执行的时候会卡死

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2023-05-25 16:15:48

同学你好,解答如下:

1、第二种写法中,一旦代码执行了if语句,if下面的代码就不会执行了:

https://img1.sycdn.imooc.com//climg/646f17d709e4169607750378.jpg

假设i=22,进入了if语句,此时代码直接进入下一循环,i并没有进行i+=2操作,即i依旧是22。代码进入下一次循环后,由于i没变,还是22,所以又进入if,又遇到continue,i依旧不会变,还是22,再进入下一循环...导致了死循环。

第二种写法,需要在if语句中,更改i的值:

https://img1.sycdn.imooc.com//climg/646f1876095af5fb07090356.jpg

2、代码的写法不同,执行顺序(逻辑顺序)就不同,最终的结果就不同,要注意。

3、同学的结果不正确。练习要求算0-100,同学的结果中,包含了102:

https://img1.sycdn.imooc.com//climg/646f18d1091e7f3004240156.jpg

调整如下:

https://img1.sycdn.imooc.com//climg/646f18ed094a88c709100417.jpghttps://img1.sycdn.imooc.com//climg/646f19c5094ecc5206710163.jpg

祝学习愉快!

  • 提问者 阿大月 #1

    我晓得您说的假设,单纯就说我写的那两段代码,按照正常逻辑,i在最初是等于0的,那么在进行if判断的时候是不通过的,那么就应该向下执行
    第一段代码跟第二段代码的区别也就是循环体第一行代码的不同,按照现在这个现象也就是代码在执行前就有逻辑检查还是什么,所以才会导致这样的不同?

    2023-05-25 16:26:04
  • 好帮手慕久久 回复 提问者 阿大月 #2

    js代码在执行之前,不会进行逻辑检查,是输入语句自身的问题。document.write不是实时输出的,它一般会在页面加载完成后,再输出内容。由于代码死循环了,页面一直处于转圈加载状态,所以document.write不会输出任何东西。

    2023-05-25 16:32:39
  • 提问者 阿大月 回复 好帮手慕久久 #3

    我是没明白为啥这个会造成死循环,初值是0,判读是false,根本不会执行continue,为啥没有往下走,而是直接死循环了
    我这边有一个类似的

    https://img1.sycdn.imooc.com//climg/646f2aff099bd7d404620222.jpg

    这段代码跟那个有些类似的,为啥这个就没有直接死循环呢?

    2023-05-25 17:32:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师