JavaScript 快速入门
js 流程控制-循环、调试
while 循环
do while 循环
for 循环
双重 for 循环
continue和break
断点调试
循环
循环目的:
在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句。这个时候我们就要用循环了。他可以帮我们重复执行某些代码。
// 循环的目的:可以重复执行某些代码
console.log('蛇皮怪');
console.log('蛇皮怪');
console.log('蛇皮怪');
console.log('蛇皮怪');
console.log('蛇皮怪');
.....................
console.log('---------------------');
在Js 中,主要有三种类型的循环语句:
while 循环
do…while 循环
for 循环
while 循环
语法结构如下:
while (条件表达式) {
// 循环体代码
}
while 语句可以在条件表达式为真的前提下,循环执行循环体代码 ,直到表达式不为真时结束循环。
使用while循环改写上面代码
while (num <= 10){//循环的条件
console.log('蛇皮怪');
}
var num = 1;//循环变量初始化
while (num <= 10) {//循环的条件
console.log('蛇皮怪!');
}
var num = 1;//循环变量初始化
while (num <= 10) {//循环的条件
console.log('蛇皮怪。');
num++;//循环变量的改变
}
循环的三要素:循环变量初始化,循环的条件(条件表达式),循环变量的改变。
案例 :
1.打印人的一生,从1岁到100岁
2.计算 1 ~ 100 之间所有整数的和
3.询问你爱我吗
弹出一个提示框, 你爱我吗? 如果输入我爱你,就提示结束,否 则,一直询问。
// while循环 循环的三要素 一个个写
// 1.
var i = 1;
while (i <= 100) {
console.log('这个人今年' + i + '岁了');
i++;
}
//2.
var sum = 0;
var j = 1;
while (j <= 100) {
sum += j;
j++
}
console.log(sum);
//3.
var message = prompt('你爱我吗?');
while (message !== '我爱你') {
message = prompt('你爱我吗?');
}
alert('爱个屁!');
### do while 循环
语句的语法结构如下:
do {
// 循环体代码 - 条件表达式为 true 时重复执行循环体代码
} while(条件表达式);
执行思路:
先执行一次循环体代码 再执行条件表达式,如果结果为 true,则继续执行循环体代码,如果为 false,则退出循环,继续执行后面代码。
var i = 1;
do {
console.log('猪猪侠');
i++;
} while (i >= 100)
注意:先再执行循环体,再判断,我们会发现 do…while 循环语句至少会执行一次循环体代码
案例:
用 do while 改写while循环的案例
// 1. 打印人的一生,从1岁到100岁
var i = 1;
do {
console.log('这个人今年' + i + '岁了');
i++;
} while (i <= 100)
// 2. 计算 1 ~ 100 之间所有整数的和
var sum = 0;
var j = 1;
do {
sum += j;
j++;
} while (j <= 100)
console.log(sum);
// 3. 弹出一个提示框, 你爱我吗? 如果输入我爱你,就提示结束,否则,一直询问。
do {
var message = prompt('你爱我吗?');
} while (message !== '我爱你')
alert('爱个屁');
### for 循环
语法结构
for(初始化变量; 循环的条件; 循环变量的改变 ){
//循环体
}
或者:
初始化变量;
for(; 循环的条件; ){
。。。。。。
循环变量的改变;
}
for (var i = 1; i <= 10; i++) {
console.log(i+'猪猪侠');
}
//或
var i = 1;//只执行一次
for(; i <= 10; ) {
console.log(i+'猪猪侠');
i++;
}
//让用户控制输出的次数
var num = prompt('请您输入次数');
for (var i = 1; i <= num; i++) {
console.log('猪猪侠');
}
断点调试:
浏览器中按 F12–> sources -->找到需要调试的文件
一行打印5个星星:★★★★★
console.log('★★★★★');
for (var i = 0; i <5; i++) {
console.log('★');
}
console.log('★');
console.log('★');
console.log('★');
console.log('★');
console.log('★');
var str = '';
for (var i = 0; i <5; i++) {
str = str + '★';
}
console.log(str);
var num = prompt('请输入星星的个数');
var str = '';
for (var i = 0; i <num; i++) {
str = str + '★'
}
console.log(str);
var star = '';
for (var i = 0; i < 5; i++) {
star += '☆'
}
console.log(star);
var star1 = '';
for (var i =0; i < 5; i++) {
star1 += '☆'
}
console.log(star1);
..............
双重 for 循环
双重 for 循环语法
for(初始化变量; 循环的条件; 循环变量的改变 ){
for(初始化变量; 循环的条件; 循环变量的改变 ){
//循环体
}
}
打印五行五列星星
var star = '';
for (var i = 0; i < 5; i++) {
for (var j = 0; j < 5; j++) {
star += '☆'
}
// 每次满 5个星星就加一次换行
star += '\n'
}
console.log(star);
案例:
打印 n 行 n 列的星星
要求用户输入行数和列数,之后在控制台打印出用户输入行数和列数的星星。
var row = prompt('请输入您打印几行星星:');
var col = prompt('请输入您打印几列星星:');
var str = '';
for (var i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
str += '☆';
}
str += '\n';
}
console.log(str);
算法:
内层循环的条件公式:
当循环次数有规律的递增或者递减时,可以使用公式:(等差)
公式为:
** j<m*i + n **
i和j 是循环变量,外部用i,内层用j。
m 是 两次循环的次数差,如果递增,值取正;如果递减,值取负。(正或者倒角)
n 是 第一轮循环的次数。(案例中为星星的个数)
使用条件:
i和j的初始值 必须相同,最好都是从 0开始。(程序员可控)
必须使用 i++ 和 j++ 进行循环变量值的改变。
打印倒三角形
<script>
// 打印倒三角形案例
var str = '';
for(var i = 0; i < 10; i++) { // 外层循环控制行数
for(var j = 0; j < -i + 10; j++) { // 里层循环打印的个数不一样 j = i
str = str + '☆';
}
str += '\n';
}
console.log(str);
</script>
打印正三角形
<script>
var str = '';
for (var i = 0; i <10; i++) { // 外层循环控制行数
for (var j = 0; j < i+1; j++) { // 里层循环打印的个数不一样
str = str + '☆';
}
str += '\n';
}
console.log(str);
</script>
打印九九乘法表
** \t tab缩进
<script>
var str = '';
for (var i = 0; i < 9; i++) { // 外层循环控制行数
for (var j = 0; j < i+1; j++) { // 里层循环控制每一行的个数 j <= i
// 1 × 2 = 2
str += j + '×' + i + '=' + i * j + '\t';
}
str += '\n';
}
console.log(str);
</script>
continue、break
#### continue 关键字
continue:结束本次循环余下部分,循环继续。
例如,吃5个包子,第3个包子坏了,就扔掉第3个,继续吃第4个第5个包子,其代码实现如下:
for (var i = 0; i <5; i++) {
if (i == 3) {
console.log('这个包子坏了');
continue; // 跳出本次循环,跳出的是第3次循环
}
console.log('我正在吃第' + i + '个包子');
}
break 关键字
break :跳出整个循环(循环结束)。
例如,吃5个包子,吃到第3个发现坏了,其余的不吃了,其代码实现如下:
for (var i = 1; i <= 5; i++) {
if (i == 3) {
break; // 直接退出整个for 循环,跳到整个for下面的语句
}
console.log('我正在吃第' + i + '个包子');
}
案例:
求1-100之间所有数的总和与平均值
求1-100之间所有偶数和奇数的和
求1-100之间所有能被3整除的数字的和
求学生成绩 : 要求用户输入班级人数,之后依次输入每个学生的成绩,最后打印出该班级总的成绩以及平均成绩。
求所有满足条件的四位数ABCD,它是13的倍数,且第3位数加上第2位数等于第4位数(即:A = B+C)。控制台打印满足条件的四位数和它们的总个数。
收用户输入的用户名和密码,若用户名为 “admin” ,密码为 “123456” ,则提示用户登录成功! 否则,让用户一直输入。
求整数1~100的累加值,但要求跳过所有个位为3的数**(用continue实现)。
BCD,它是13的倍数,且第3位数加上第2位数等于第4位数(即:A = B+C)。控制台打印满足条件的四位数和它们的总个数。
接收用户输入的用户名和密码,若用户名为 “admin” ,密码为 “123456” ,则提示用户登录成功! 否则,让用户一直输入。
求整数1~100的累加值,但要求跳过所有个位为3的数**(用continue实现)。**
简易ATM
里面现存有 100 块钱。
如果存钱,就用输入钱数加上先存的钱数, 之后弹出显示余额提示框
如果取钱,就减去取的钱数,之后弹出显示余额提示框
如果显示余额,就输出余额
如果退出,弹出退出信息提示框