上篇文章我们总结了有关运算符、逻辑符号、for 、switch的学习。本篇文章主要是对编程中另一常见的结构---循环加以学习。
这里的学习和其他的编程语言一样,主要是分为for 循环和while循环,同时学会使用continue和break。如果有其他代码学习经验,这里的内容可以快速浏览。
一、For 循环
1.1 for循环的结构
基本的使用方法和结构写在了下方:
for (初始化变量; 条件表达式; 操作表达式) {
循环体;
}
// 举例
for (var i = 1; i <= 100; i++) {
console.log('你好JS');
}
对上面的例子加以解释:
1. 首先定义计数器变量 var i = 1 .只执行一次
2. i <= 100 来是判断结束的条件, 如果满足条件就执行循环体 ,否则退出循环
3. 最后去执行 i++ 一轮循环结束
4. 接着去执行 i <= 100 如此循环。
针对上面的例子,我们可以增加一些与用户的互动:
<script>
//可以让用户控制输出的次数
var num = prompt('请您输入次数');
for (var i = 1; i <= num; i++) {
console.log('你好JS');
}
</script>
1.2 for循环可以和分支结构嵌套使用
比如,如下代码:
<script>
for (var i = 1; i <= 99; i++) {
if (i == 1) {
console.log('他出生了');
} else if (i == 99) {
console.log('他死了');
} else {
console.log('这个人今年' + i + '岁了');
}
}
</script>
在循环时,当i == 1 显示出生了,i == 99 显示死了,其余循环阶段显示每一年的岁数。这就是for循环和分支结构的嵌套。
1.3 for循环进行数据处理
for循环也同样可以辅助我们解决有一定规律的数学问题。
1.3.1 求1-100之间所有数的平均值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
//1 求1-100的和的平均数
var sum1 = 0;
for (var i = 1; i <= 100; i++) {
sum1 += i;
}
alert('1-100的和的平均数为:' + (sum1 / 100))
</script>
</head>
<body>
</body>
</html>
1.3.2 求1-100之间所有偶数和奇数的和
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
//2 求1-100所有奇数偶数的和
var odd_sum = 0;
var even_sum = 0;
for (var i = 1; i <= 100; i++) {
if (i % 2 == 0) {
odd_sum += i;
}
else {
even_sum += i;
}
}
alert('1-100的奇数和为:' + even_sum)
alert('1-100的偶数和为:' + odd_sum)
</script>
</head>
<body>
</body>
</html>
1.3.3 求1-100之间所有能被3整除的数字的和
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
//3 1-100 被3 整除的数字的和
var sum2 = 0;
for (var index = 0; index <= 100; index++) {
if (index % 3 == 0) {
sum2 += index;
}
}
alert('1-100 被3 整除的数字的和为:' + sum2)
</script>
</head>
<body>
</body>
</html>
1.4 使用for循环计算班级所有人的成绩案例
人数自定义,成绩自定义,并计算总成绩和平均分。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var num = prompt("班级中一共多少人?");
var sum = 0;
var average = 0;
var score;
for (var i = 1; i <= num; i++) {
score = prompt('第' + i + '个人的成绩是:');
sum += parseFloat(score);
}
average = sum / num;
alert('班级总的成绩是' + sum);
alert('班级平均分是:' + average);
</script>
</head>
<body>
</body>
</html>
1.5 双重for循环
双重for循环的结构如下:外层循环循环一次, 里面的循环执行全部 。
<script>
// 双重for循环 语法结构
for (外层的初始化变量; 外层的条件表达式; 外层的操作表达式) {
for (里层的初始化变量; 里层的条件表达式; 里层的操作表达式) {
// 执行语句;
}
}
// 外层循环循环一次, 里面的循环执行全部
</script>
做一个可以打印任意行,任意列的五角星矩阵的例子;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var col = prompt("想要多少列");
var row = prompt("想要多少行");
var str = '';
for (let i = 1; i <= row; i++) {
for (let j = 1; j <= col; j++) {
str = str + '★';
}
str = str + '\n';
}
console.log(str);
</script>
</head>
<body>
</body>
</html>
1.5 经典案例--9*9乘法表
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
var str = '';
for (let i = 1; i <= 9; i++) {
for (let j = 1; j <= i; j++) {
str += j + '×' + i + '=' + i * j + ' ';
}
str = str + '\n';
}
console.log(str);
</script>
</head>
<body>
</body>
</html>
二、While 循环
2.1 while 的基本结构
<script>
// while 循环语法结构
while (条件表达式) {
循环体
叠加器的变化
}
// 执行思路 当条件表达式结果为true 则执行循环体 否则 退出循环
</script>
直接对条件进行判断,如果条件成立进行,则进入循环体执行内部代码。
2.2 while 的使用例子
求1-100所有偶数的和:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var sum = 0;
var i = 1;
while (i <= 100) {
if (i % 2 == 0) {
sum += i
}
i++;
}
alert('偶数的和为:' + sum);
</script>
</head>
<body>
</body>
</html>
2.3 do while循环结构
do while的使用结构如下:
<script>
// do while 循环结构
do {
循环体
迭代器变化
} while (条件表达式)
// do while 循环体至少执行一次!!!
</script>
do while循环 和 while循环的区别:do while先执行一次以后再判断,所以至少会执行一次。而while先判断再执行。
2.4 do while循环案例
用do while 改写1-100的偶数的和的案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var sum = 0;
var i = 1;
do {
if (i % 2 == 0) {
sum += i;
}
i++;
} while (i <= 100);
alert('偶数的和为:' + sum);
</script>
</head>
<body>
</body>
</html>
三、continue 和 break
3.1 continue 关键字
continue :退出本次(当前次的循环) ,继续执行剩余次数循环。
可以使用continue改写1-100的偶数的和的案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var sum = 0;
for (var i = 1; i <= 100; i++) {
if (i % 2 != 0) {
continue;
}
sum += i;
}
alert('偶数的和为:' + sum);
</script>
</head>
<body>
</body>
</html>
3.2 break 关键字
break :退出整个循环,不再执行。
这个案例:设计者只允许输出3遍,请求多余3次就不执行。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var num = prompt('你想要输出多少遍内容?');
for (var i = 1; i <= num; i++) {
if (i == 4) {
console.log('不好意思,设计者只让输出3次~');
break;
}
console.log('这是第' + i + '次输出');
}
</script>
</head>
<body>
</body>
</html>