我们没办法控制每次循环的时间长度
循环会增大程序的时间复杂度(不建议无限循环嵌套,一般情况下不会嵌套超过两次)
死循环就是重复执行代码, 不会停止.
死循环会造成程序卡死甚至崩溃等问题, 我们不能写会造成死循环的代码.
while(布尔类型表达式){ //循环体(迭代 初识值变化 操作) } 例如: var i = 0 //初始值定义 while(i<10){ i+=2 // i++ 迭代 如果没有会导致死循环 console.log(i); //操作输出 }
注意:
1, while循环必须按照上述语法格式来写, 只能更改表达式内容和执行代码.
2, 表达式可以是常量,变量或者其他表达式,该表达式会被强制转换为boolean类型, 可以理解表达式就是循环的条件, 条件成立则进入括号{}里面执行代码,否则不进入;
3, 执行代码可以有多行, {}所包含的称为循环体.
4, 表达式不要一直是true, 避免死循环.
5.while循环的顺序是: 先判断表达式是否为true, 若true则执行执行代码, 然后再继续判断表达式是否为true, …. 直到判断表达式为false才会跳出循环, 执行while后面的代码。
do-while和while的区别:
在于判断条件的先后不一样, while是先判断条件, 而do-while是先执行再判断; 所以不管do-while表达式的条件是否成立, 都至少会执行一次循环体.
do while的写法 先做后判断(至少做一次) while 先判断后做 do-while循环语法格式: do { 执行代码; } while(布尔表达式条件) 例如: var isDw = false do{ console.log("我今天喝水了"); }while(isDw) 在开发中,while用的情况多。如果while处理逻辑比较别扭时,就需要使用do-while
for循环是一个比较常用的循环
for循环语法格式: for (表达式1; 表达式2; 表达式3) { 执行代码; } 注意: 1, 表达式1: 可写循环初始值, (可以不填) 2, 表达式2: 循环条件 3, 表达式3: 循环增量(减量) 4, 两个分号必须写. 例如: for(var i=0;i<10;i++){ console.log(i);//0-9 } 或者: for(;i<5;i++){ console.log(i);//0-4 } var i = 5 案例: 使用for循环计算1+10的和 var sum = 0 for(var i=0;i<=10;i++){ sum+=i //0+10 } console.log(sum); 注意:使用while循环进行1+10 do while和while 时间复杂度一致 while循环速度比for快一倍 while时间复杂度低于for循环
break的功能:
1,在switch语句中使流程跳出switch结构。
2,在循环语句中使流程跳出当前的循环
注意 1, 如果已执行break语句,就不会执行循环体中位于break后的语句。 2, 在多层循环中,一个break语句只向外跳一层
for(var i=0;i<5;i++){ if(i==3){ break//结束这个for循环 0 1 2 } console.log(i); } //双层嵌套的循环break在什么位置 就结束当前位置循环 //复杂循环 for(var i=10;i>=5;i--){ for(var j=i;j<=6;j++){ if(j*i>33){ break } console.log(j);//5 6 } } //break 在外面的循环 会结束里面包含的循环 但是里面包含的不会结束外面的循环
continue的功能: 只能在循环语句中使用,使本次循环结束,即跳过循环体中下面尚未执行的语句,接着进行下次是否执行循环的判断。
注意: 1, continue语句只能用在循环里。 2, 对于 while 和 do-while 循环,continue 语句执行之后的动作是条件判断;对于 for 循环,随后的动作是变量更新。
for(var i=1;i<=3;i++){ for(var j=1;j<=3;j++){ if(j==2){ break; //1*1 2*1 3*1 //后面的不走了 continue; //1*1 1*3 2*1 2*3 3*1 3*3 接下来接着执行 } console.log(i*j); } }