js循环,break,continue
循环
是重复性做一件事情
我们没办法控制每次循环的时间长度
循环会增大您的程序时间复杂度(不建议无限循环嵌套 一般情况下不会嵌套超过俩次)
死循环 是不会停止的循环 会导致您的电脑内存溢出 从而蓝屏(要避免死循环)
循环分为很多种 常见的有三种 while循环 do while循环 for循环
while循环
写法
定义初识值
while(布尔类型表达式){
循环体(迭代 初识值变化 操作)
}
var i = 0 //初始值定义
while(i<10){
// i++//迭代 如果没有会导致死循环
i+=2
console.log(i);//操作
}
100以内的逢7过 7的倍数或者存在7都过
var number=1
while(number<=100){
//得到10位和个位的数
var first = number%10
var last = 0
if(number<10){
//不需要取10位的值
}else{
//需要10位值
last = parseInt(number/10%10)
}
//判断是否为7的倍数
if(number%7==0 || first==7 || last==7){
console.log("过");
}else{
console.log(number);
}
//迭代增量
number++
}
do while循环 //先做后判断(至少做一次) while 先判断后做
写法
var 初始值
do{
循环体
迭代量
}while(布尔表达式条件)
var number1 = 100
var sum = 0
do{
sum+=number1
number1--
}while(number1>0)
console.log(sum);
for循环
是一种比较常用的循环
写法
for(初始值 省略不写;判断条件;迭代量){
循环体
}
for(var i=0;i<10;i++){
console.log(i);//0-9
}
var i = 0
for(;i<5;i++){
console.log(i);//0-4
}
var i = 5
for(;i>0;i--){
console.log(i);//5-1
}
10的阶乘
var sum = 1
for(var i=1;i<=10;i++){
sum*= i
}
console.log(sum);
时间复杂度 代码执行时长
使用while循环进行1+10 do while和while 时间复杂度一致 while循环速度比for快一倍
while时间复杂度低于for循环
var i = 0
var sum = 0
//使用while循环进行1+10
while(i<=10){
sum+=i //0+10
i++
}
console.log(sum);
//使用for循环1+10
var sum = 0
for(var i=0;i<=10;i++){
sum+=i //0+10
}
console.log(sum);
循环嵌套
绘制图形
直角三角形
// * 0--1
// *** 1--3
// ***** 2--5
// 分为行 3和列 5
for(var row=0;row<3;row++){
var str = ''
for(var col=0;col<2*row+1;col++){
str+='*'
}
console.log(str);
}
等腰三角形
//###*###
//##***##
//#*****#
//*******
//4行 7列
// 第一行*1个 #3个 row 0
// 第二行*3个 #2个 row 1
// 第三行*5个 #1个 row 2
// 第四行*7个 #0个 row 3
for(var row=0;row<4;row++){
var str = ''//接收每行的内容
//绘制#
for(var col=0;col<3-row;col++){
str+=' '
}
//绘制*号
for(var col=0;col<2*row+1;col++){
str+='*'
}
console.log(str);
}
倒的等腰三角形
//*******
//#*****#
//##***##
//###*###
//第一行 # 0个 * 7个 row 0
//第二行 # 1个 * 5个 row 1
//第一行 # 2个 * 3个 row 2
//第一行 # 3个 * 1个 row 3
for(var row=0;row<4;row++){
var str = ''
//col<row col-- row++ 不能的写法 会死循环 col>row col++ row--不能的写法 死循环
for(var col=0;col<row;col++){
str+="#"
}
for(var col=0;col<7-2*row;col++){
str+="*"
}
console.log(str);
}
菱形
//###*### 3 row 0 *1
//##***## 2 1 3
//#*****# 1 2 5
//******* 0 3 7
//#*****# 1 4 5
//##***## 2 5 3
//###*### 3 6 1
//总共7行 最多为7列
for(var row=0;row<7;row++){
var str = ''//每行显示的内容
//上半部分
if(row<=3){
//先打印#
for(var col=0;col<3-row;col++){
str+='#'
}
for(var col=0;col<2*row+1;col++){
str+='*'
}
}else{
//下半部分
//先打印#
for(var col=0;col<row-3;col++){
str+='#'
}
for(var col=0;col<13-2*row;col++){
str+='*'
}
}
console.log(str);
}
//递减的形式
//绘制菱形
//###*### 3 row 7 *1 15-14
//##***## 2 6 3 15-12
//#*****# 1 5 5 15-10
//******* 0 4 7 15-8
//#*****# 1 3 5
//##***## 2 2 3
//###*### 3 1 1
for(var row=7;row>0;row--){
var str = ''
//上半部分
if(row>3){
//绘制#
for(var i=row-4;i>0;i--){
str+='#'
}
//绘制星号
for(var i=15-2*row;i>0;i--){
str+='*'
}
}else{
//下半部分
//绘制#
for(var i=4-row;i>0;i--){
str+='#'
}
//绘制*
for(var i=2*row-1;i>0;i--){
str+='*'
}
}
console.log(str);
}
九九乘法表
for(var i=1;i<10;i++){
var str = ''
for(var j=1;j<=i;j++){
str+=(j+'*'+i+'='+i*j+'\t')
}
console.log(str);
}
break
break在switch中会跳出整个switch块 for也一样他会跳出整个for块
for(var i=0;i<5;i++){
if(i==3){
break//结束这个for循环 0 1 2
}
console.log(i);
}
双层嵌套的循环break在什么位置就结束当前位置循环
break 在外面的循环 会结束里面包含的循环 但是里面包含的不会结束外面的循环
break是结束本个循环
for(var i=1;i<3;i++){
for(var j=1;j<3;j++){
if(i==2){
break
}
console.log(j*i); // 1 2
}
// if(i==2){
// break
// }
console.log(i); // 1 2 如果上面的不注释打印的值为 1
}
复杂循环
for(var i=10;i>=5;i--){
for(var j=i;j<=6;j++){
if(j*i>33){
break
}
console.log(j);//5 6
}
}
continue
跳过本次循环
for(var i=0;i<5;i++){
if(i==2){
// break; //0 1
continue; //跳过本次循环 进入下次循环 //0 1 3 4
}
console.log(i);
}