第一百零三章 跳出和跳过

上一章最后的例子写起来稍微有点复杂,所以我们换个写法。首先既然想让它一直循环下去,还弄个变量干嘛(上一章设置变量是为了可以修改)?我们直接把条件设置为 true 不就好了,对,这个写起来麻烦,那就用 1,这个就简单了。

let i = 1;while(1){i = i*2;if(i>1000){console.log(i);break;}}

当然,条件永远为真(现在这个条件没法修改了),这肯定是个死循环,怎么办呢?大家也看到了,我写了一个 break,这是什么意思呢?就是当执行到它,那么无条件终止循环,管你什么条件不条件,后面还有没有语句,到此为止,跳出去,这轱辘掐了,不继续执行了。

这是很厉害的事情,你看,死循环都被它轻松地搞定了。不过,你要明确的知道它什么时候会跳出,就像知道循环什么时候会终止一样(这好像是一个意思)。

好,这也没有什么复杂的嘛~但是有些情况我们希望跳过本次循环,而不是完全终止循环。举个例子:

我现在想输出 10 以内的奇数,我可以这么写:

let i = 1;while(i<=10){if(i%2===1){console.log(i);}i++;}

如果 i 除以 2 的余数是 1,那么它就是奇数,就输出它。这样写完全没有问题,不过我们也可以换一种思路:依旧是 i 自增的循环,输出 i,但是如果 i 是偶数,我们就跳过当前这里一轮循环,不做输出了,直接进行下一轮:

let i = 1;while(i<=10){if(i%2===0){continue;}console.log(i);i++;}

continue 是继续的意思,就是这一轮虽然不继续执行了,但是下一轮继续。也是一个很好理解的东东。但要注意的是,一旦执行到它,就立刻开始下一轮。这一轮还有代码?谁管它们啊~

那我们上面的代码里,一旦执行到 continue,后面的 i++ 就不会被执行了,和输出一样被跳了过去,所以到了下一轮,i 没有变化,那不就和前一轮一样的结果了么?结果陷入死循环中,无法自拔。这是我们必须注意的问题:究竟会跳过哪些代码。

这个有几种方式修改,我只举例一种,剩下的大家自己思考哦~

let i = 1;while(i<=10){if(i%2===0){i++;continue;}console.log(i);i++;}

虽然这个例子里并不是必须用 continue 才能实现效果,不过还是足够让我们了解它的用法。代码并没有绝对标准的写法,不同的理解写出不同的代码,很正常。关键还是掌握基本方法,这样你怎么理解都能写出来相应的代码,就很爽!

这一章就学习了两个单词,一个彻底跳出(break),一个就跳过一轱辘(continue)。挺重要的,因为它们可以把某些复杂情况迅速简化。

要注意:一个操作如果能让代码迅速简化,就要慎用,因为这一般伴随着容易让代码混乱的潜质!!!

所以除非你明确知道自己在做什么,并且真的需要这样做,否则不建议随便使用它们。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容