十八、break
和continue
18.1 break
表示立即终止循环
1 | <script> |
遇见break语句,会立即结束整个循环,做循环后面的语句去了。当前这次遍历,没有做完的语句也不做了
1 | <script> |
break天生打断最内层循环的
1 | <script> |
break
这个语句,产生了一个新的算法思维,后置验证i的值。
1 | for(var i = 0 ; i < 10 ; i++){ |
如果这个变量i成功执行了所有次数的循环,出了循环之后,必然值是10
如果出了循环之后,值不是10,说明这个i不是自己出来的,而是被break赶出来的的
18.1.1 算法题目1:验证字符串都是牛,没有别的字
比如,验证“牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛午牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛”中是不是都是牛,没有午
- 字符串的长度叫做
length
,length
是属性,所以没有函数,没有括号
1 | “我爱你”.length // 3 |
- 得到字符串某位那个字,用
charAt()
从0
开始数。charAt()
是函数,所以有括号
1 | <script> |
18.1.2 算法题目2:验证200~300之间有没有水仙花数
1 | <script> |
1 | <script> |
18.1.3 算法题目3:寻找1~100的质数
之前用的是count法,比如验证48 是不是质数,我们发现1 2 3 4 6 8 12 16 24 48 共10个数字都是它的约数,即i为48时,因为count是10 ,而不是2 ,所以48 不是质数
但是为何要统计48有几个约数呢?只要2~47有数字能整除,就是说明不是质数了
改良算法:
1 | <script> |
18.2 continue
continue
没啥用。为啥?因为continue
这个语句,已经被人诟病,影响程序可读性,公司不让用。
continue
表示进入下一次迭代。本次迭代的后续语句不做了。
1 | <script> |
没有3 ,到3 那次迭代的时候,遇见了continue语句,立即进入下一次迭代,就是4了
事实上,不想数出3,直接写:
1 | <script> |
18.3 给循环命名
给循环命名,这个写法工作中完全不让用!!!
1 | waiceng :for(var i = 1 ; i < 10 ; i++){ |