js中的循环语句
- for循环
- while循环
- do while循环
何为循环
在程序中,反复被执行的语句叫做循环体,循环体是否能被重复执行,取决于循环的终止条件,由循环体及循环的终止条件组成的语句叫做循环语句
循环的目的
可以重复执行某些代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环初体验</title>
</head>
<body>
</body>
<script>
for (var i = 0; i < 100; i++) {
console.log('hello word');
}
</script>
</html>
for循环
目的:可以重复执行某些代码,通常给计数有关。
语法
for(初始化变量;条件表达式;操作表达式) {
//循环体
}
- 初始化变量:通常被用来计数,使用var来声明
- 条件表达式:取决于循环体的终止条件
- 操作表达式:用来更新初始化变量
for循环的执行过程
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环</title>
</head>
<body>
</body>
<script>
for (var i = 1; i <= 100; i++) {
console.log('hello 尧子陌');
}
</script>
</html>
执行原理
i = 1 只会被执行一次,执行完毕后,执行条件表达式,若满足,则执行循环体的语句,若不满足,则跳出循环体。然后执行条件表达式,判断条件表达式是否满足,若满足,则执行循环体的语句,若不满足,则跳出循环体
for循环之断点调试
在程序的某一行设置断点,以便更好的观察程序是如何运行的
步骤如下
- 按f12键进入sources(根源),在需要设置断点的当前行设置店,刷新浏览器
- 按上下箭头进行下一步操作
通过watch更好的观察变量的值的变化
for循环之执行相同的代码
通过prompt输入的值转换成整数来控制循环的次数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环之执行相同的代码</title>
</head>
<body>
</body>
<script>
var user = parseInt(prompt('请输入次数'));
for (var i = 1; i <= user; i++) {
console.log('Hello Word');
}
</script>
</html>
通过for循环可之执行不同的代码
输出一个人1岁及100岁,并提示出生及死亡
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环之执行不同的代码</title>
</head>
<body>
</body>
<script>
for (var i = 1; i <= 100; i++) {
if (i == 1) {
console.log('欢迎你 来到美丽的世界');
} else if (i == 100) {
console.log('你已经死亡了');
} else {
console.log('恭喜你' + i + '岁');
}
}
</script>
</html>
for循环可之执行相同的操作
求1~100的累加和
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环之执行相同的操作</title>
</head>
<body>
</body>
<script>
// 声明求和的变量
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i
}
console.log(sum);
</script>
</html>
思路如下
- 要循环100次,需要一个计数器i
- 需要一个存储结果的值为sum
- 计算公式:sum=sum+i
for循环之求1~100的平均数
求1~100之间的平均数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环之求1~100的平均数</title>
</head>
<body>
</body>
<script>
//声明一个求和的变量
var sum = 0;
var average = 0;
for (var i = 1; i <= 100; i++) {
sum += i
}
var average = sum / 100;
console.log(average);
</script>
</html>
for循环求1~100中所有奇数和偶数的和.
思路如下:如何判断一个数为偶数呢?
解:能被2整除且余数为0,则为偶数,反之为奇数。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环之求1~100偶数与奇数的和</title>
</head>
<body>
</body>
<script>
// 声明求偶数的和
var even = 0;
// 声明求奇数的和
var odd = 0;
for (var i = 0; i <= 100; i++) {
if (i % 2 == 0) {
even += i
} else {
odd += i
}
}
console.log('1至100 所有偶数的和', even);
console.log('1至100 所有奇数的和', odd);
</script>
</html>
for循环求100以内能被3整除的和
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环之求1~100能被3整除的和</title>
</head>
<body>
</body>
<script>
var result = 0;
for (var i = 1; i <= 100; i++) {
if (i % 3 == 0) {
result += i
}
}
console.log('1~100能被3整除的和', result);
</script>
</html>
for循环之学生案例
弹出输入框,输入班级总人数,求出总成绩及平均成绩sum
分析
1.弹出输入框,用户输入班级的总人数(userName)
2.依次输入学生的成绩(保存起来为sorce),,需要用到for循环,弹出的输入框的次数跟班级总人数有关.条件表达式i<=userName
3.程序内部处理,计算总成绩(sum),之后再计算平均值(average)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环之求学生的总成绩及平均成绩</title>
</head>
<body>
</body>
<script>
// 声明求总成绩的变量
var sum = 0;
// 声明求平均数的变量
var average = 0;
// 弹出输入框 输入班级总人数
var userName = parseFloat(prompt('请输入班级总人数'));
for (var i = 1; i <= userName; i++) {
// 弹出输入框 学生输入自己的成绩
var score = parseFloat(prompt('请输入' + i + '个学生的成绩'));
// 求学生的总成绩
sum += score;
}
// 求学生的平均成绩
var average = sum / userName;
alert('学生的总成绩:' + sum);
alert('学生的平均成绩' + average);
</script>
</html>
for循环之打印n行星星
分析
1.通过prompt输入的值控制星星的个数
2.通过字符串追加的方式在控制台打印星星
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>for循环之打印n行星星</title>
</head>
<body>
</body>
<script>
// 声明一个空字符串
var str = ''
var user = parseInt(prompt('请输入打印星星的个数'));
for (var i = 1; i <= user; i++) {
str += '★'
}
console.log(str);
</script>
</html>
for循环之双重for循环
在for循环的基础上嵌套一个for循环,被称为双重for循环
语法
for(外循环初始化变量;外循环条件表达式;外循环操作表达式) {
for(内循环初始化变量;内循环条件表达式,内循环操作表达式) {
//执行的语句
}
}
注意事项
- 内循环可以看做外循环的语句
- 外循环执行一次,内循环执行全部
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>双重for循环的执行过程</title>
</head>
<body>
</body>
<script>
for (var i = 1; i <= 3; i++) {
console.log('外层for循环执行的' + i + '次');
for (var j = 1; j <= 3; j++) {
console.log('内层for循环执行的' + j + '次');
}
}
</script>
</html>
双重for循环之打印5行5列的星星
- 外层循环负责打印5行星星
- 内层循环负责一行打印5个星星
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>双重for循环之打印5行5列的星星</title>
</head>
<body>
</body>
<script>
var str = ''
for (var i = 0; i < 5; i++) {
for (var j = 0; j < 5; j++) {
str += '★'
}
str += '\n'
}
console.log(str);
</script>
</html>
双重for循环之输入N行N列的星星
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>双重for循环之打印n行n列的星星</title>
</head>
<body>
</body>
<script>
var str = ''
var row = parseInt(prompt('请输入行数'));
var cols = parseInt(prompt('请输入列数'));
for (var i = 1; i <= row; i++) {
for (var j = 1; j <= cols; j++) {
str += '★'
}
str += '\n'
}
console.log(str);
</script>
</html>
双重for循环之打印倒三角形
核心思路:j= i ; j<10 ; j++
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>双重for循环之打印倒三角形</title>
</head>
<body>
</body>
<script>
var str = ''
for (var i = 0; i < 10; i++) {
for (var j = i; j < 10; j++) {
str += '★'
}
str += '\n'
}
console.log(str);
</script>
</html>
双重for循环之打印正三角形
核心思路:j=0;j<i;j++
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>双重for循环之打印正三角形</title>
</head>
<body>
</body>
<script>
var str = ''
for (var i = 0; i < 10; i++) {
for (var j = 0; j < i; j++) {
str += '★'
}
str += '\n'
}
console.log(str);
</script>
</html>
双重for循环之打印九九乘法表
- 外层控制行数 总共需要循环9行
- 内层控制列数 核心:j<=i
- 公式: j + ‘*’ + i + ‘=’ + i * j + ‘\t’
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>双重for循环之打印九九乘法表</title>
</head>
<body>
</body>
<script>
var str = '';
for (var i = 1; i <= 9; i++) {
for (j = 1; j <= i; j++) {
str += j + '*' + i + '=' + i * j + '\t'
};
str += '\n'
}
console.log(str);
</script>
</html>
for循环之总结
- for循环可以重复执行某些代码
- for循环可执行不同的代码
- 双重for循环,外循环执行一次,内循环全部执行。
while循环
语法
操作表达式
while(条件表达式) {
//循环体代码
操作表达式
}
注意事项
- while循环中的条件表达式若为true,则执行循环体的语句,反之为false,则不执行循环体的语句
- 执行完循环体的语句后,操作表达式会进行自增,会继续判断条件表达式是否满足(上述步骤)
- while循环可以进行更复杂的条件判断。
while循环之打印hello word
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>while循环</title>
</head>
<body>
</body>
<script>
var i = 1;
while (i <= 100) {
console.log('Hello Word');
i++
}
</script>
</html>
while循环之打印人的一生并提示出生及死亡
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>while循环之打印人的一生</title>
</head>
<body>
</body>
<script>
var i = 1;
while (i <= 100) {
if (i == 1) {
console.log('恭喜你 出生了');
} else if (i == 100) {
console.log('恭喜你 已经飞升仙界');
} else {
console.log('你已经' + i + '岁');
};
i++
}
</script>
</html>
while循环之求1~100整数的累加和
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>while循环之求1~100整数的累加和</title>
</head>
<body>
</body>
<script>
var i = 1;
var sum = 0;
while (i <= 100) {
sum += i;
i++
}
console.log('1~100整数的累加和:' + sum);
</script>
</html>
while循环之条件判断(你爱我吗)
要求:弹出输入框,除非用户输入我爱你,则停止询问,否则一直无限询问。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>while循环之条件判断(你爱我吗)</title>
</head>
<body>
</body>
<script>
var user = prompt('你爱我吗?');
while (user != '我爱你') {
user = prompt('你爱我吗?')
}
alert('我也爱你 宝贝')
</script>
</html>
do while循环
do while循环是while循环的变体,do while循环至少会执行一次循环体的代码,再去执行操作表达式使变量进行自增或自减,再去判断条件表达式,若为true,则执行循环体的语句,false则不执行
var i =1;
do {
//循环体语句
操作表达式
}while(条件表达式)
do while循环之打印人的一生
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>do while循环之打印人的一生</title>
</head>
<body>
</body>
<script>
var i = 1;
do {
console.log('你已经' + i + '岁');
if (i == 1) {
console.log('恭喜你 出生了');
} else if (i == 100) {
console.log('恭喜你 飞升仙界');
}
i++
} while (i <= 100)
</script>
</html>
do while循环之打印1~100之间所有整数的和
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>do while循环求1~100整数的累加和</title>
</head>
<body>
</body>
<script>
var i = 1;
var sum = 0;
do {
sum += i;
i++
} while (i <= 100);
console.log('1~100整数的累加和:' + sum);
</script>
</html>
do while循环之条件判断(你爱我吗)
要求:弹出输入框,除非用户输入我爱你,则停止提示询问,否则会一直询问下去。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>do while循环之条件判断(你爱我吗)</title>
</head>
<body>
</body>
<script>
do {
var user = prompt('你爱我吗');
} while (user != '我爱你')
alert('我也爱你 宝贝')
</script>
</html>
循环之总结
- JS中的循环:for循环 while循环 di while循环
- 在特殊情况下,三者可以相互替换
- do while是while的变体,和while的区别是执行顺序不一样,while循环先判断后执行,do while循环至- 少执行一次
- 重点放在for循环
continue break的区别
continue
continue:跳出本次循环,进行下次循环
求1~100内能被7整除之外所有整数的和
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>continue之求1~100内能被7整除之外所有整数的和</title>
</head>
<body>
</body>
<script>
var sum = 0;
for (i = 1; i <= 100; i++) {
if (i % 7 == 0) {
continue
};
sum += i
}
console.log('1~100内能被7整除的整数累加和:' + sum);
</script>
</html>
break
立即跳出整个循环,不再进行下次循环
i等于3的时候,跳出整个循环
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>break</title>
</head>
<body>
</body>
<script>
for (var i = 0; i <= 5; i++) {
if (i == 3) {
break
}
console.log(i);
}
</script>
</html>
简易ATM机
使用最简单的switch语句即可
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>简易ATM</title>
</head>
<body>
</body>
<script>
// 简易ATM机
var userName = parseInt(prompt('请输入操作\n1.存钱\n2.取钱\n3.显示余额\n4.退出'))
// 本金
var capital = 100;
switch (userName) {
case 1:
var money = parseFloat(prompt('请输入存钱的金额'));
var capital = capital + money;
alert(capital);
break;
case 2:
var cash = parseFloat(prompt('请输入取钱的金额'));
if (cash > capital) {
alert('金额不足')
} else if (cash < capital) {
var capital = capital - cash;
alert('余额为:' + capital)
};
break
case 3:
alert('余额为:' + capital);
break;
case 4:
alert('退出');
break;
default:
alert('输入有误 重新输入')
}
</script>
</html>