do while

do while

老师举的例子中var j=1; do{if(j%2==0){console.log(j);}j++;}while(j<=10);为什么12没有被打印出来  不是10完事会再判断下12吗?


正在回答

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

2回答

1、下列这种情况,因为do{……}while()语句是倒装的,第一次传入j=1,在do{……}语句中进行判断是否为偶数,如果是则打印,然后在while语句中进行判断,j是小于10的,然后进行第二次循环,第二次传入j=2,在do{……}语句中进行判断是否为偶数,如果是则打印,然后在while语句中进行判断,是小于10的,进行第三次循环……依次类推,当j=10的时候,执行在do{……}语句中进行判断是否为偶数,如果是则打印,然后在while语句中进行判断,j=10,满足最大的限定条件j<=10中的等于10,所以停止循环,也就是不会再继续传入j的值了,因此不会打印出12。

http://img1.sycdn.imooc.com//climg/5c2c7d080001ced413230663.jpg

关于同学说的j=18会打印出来的问题,因为do{……}while()语句是倒装的,因为先声明的j=18,所以会直接传入j=18,先在do{……}语句中进行判断是否为偶数,如果是则打印,然后才在while语句中进行判断,这个时候,已经执行完了do{……}语句。并将结果打印出来了,所以,这个时候,while语句中进行判断的结果不会影响到do{……}语句中打印的结果。

http://img1.sycdn.imooc.com//climg/5c2c7e14000100c513180420.jpg

希望可以帮到你!

卡布琦诺 2019-01-01 11:08:31

因为条件是小于等于10,当执行到12的时候,不满足条件,所以不会被打印。

希望可以帮到你!

  • 提问者 weixin_慕哥8086897 #1
    视频中拿18举了个例子,18<10不成立,但是还是打印出来了啊
    2019-01-02 10:02:38
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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