循环
在程序中,一组被重复执行的语句被称之为循环体
,能否继续重复执行取决于终止体条件
,由循环体及终止条件组成的语句被称之为循环语句
。
死循环:条件语句永远成立
一、for循环
重复执行某些代码,通常跟计数有关
1.初始化变量: 就是用 var 声明的一个普通变量,通常用于作为计数器使用
2.条件表达式: 就是终止条件,用来决定每一次循环是否执行,如果结果是 true 就继续循环,否则退出循环
2.操作表达式: 就是每次循环最后执行的代码,经常用于我们计数器变量进行更新(递增或递减)
for(初始化变量; 条件表达式; 操作表达式 ){
循环体
}
for (var i = 1; i <= 100; i++) {
console.log('你好吗');
}
执行过程:
1.首先执行里面的计数器变量 var i = 1
但是这句话在for里面只执行一次
2.去i <= 100
执行条件表达式,如果为true,则执行循环体语句,否则退出循环,循环结束
3.最后执行i++
操作表达式,第一轮结束
4.第二轮开始,直接去执行条件表达式i <= 100
,如果为 true ,则去执行循环体语句,否则退出循环
- for 循环重复相同的代码
// 基本写法
for(var i = 1; i <= 10; i++){
console.log('鲸渔');
}
// 用户输入次数
var num = prompt('请输入次数:');
for ( var i = 1 ; i <= num; i++) {
console.log('鲸渔');
}
- for 循环重复不相同的代码
for 循环还可以重复不同的代码,这主要是因为使用了计数器 ,计数器在每次循环过程中都会有变化
// 基本写法
for (var i = 1; i <= 100; i++) {
console.log('这个人今年' + i + '岁了');
}
// for 里面是可以添加其他语句的
for (var i = 1; i <= 100; i++) {
if (i == 1) {
console.log('这个人今年1岁了, 它出生了');
} else if (i == 100) {
console.log('这个人今年100岁了,它死了');
} else {
console.log('这个人今年' + i + '岁了');
}
}
for循环因为有了计数器的存在,还可以重复的执行某些操作,比如做一些算术运算
求 1~100 之间的整数累加和
var sum = 0; // 求和变量
for (var i = 1; i <= 100; i++) {
// sum = sum + i;
sum += i;
}
console.log(sum);
二、双重for循环
内层循环可以看做外层循环的语句
外层循环执行一次,内层循环要执行全部次数
var star = '';
for (var i = 1; i <= 3; i++) {
for (var j = 1; j <= 3; j++) {
star += '☆'
}
// 每次满 5个星星 就 加一次换行
star += '\n'
}
console.log(star);
// 九九乘法表
var str = '';
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
str += j + '×' + i + '=' + i * j + '\t';
}
str += '\n';
}
console.log(str);
三、while循环
while
语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不为真时结束循环
while (条件表达式) {
// 循环体代码
}
变量初始化
while (条件表达式) {
// 循环体代码
变量更新
}
var num = 1; // 初始化变量,计数器
while (num <= 100) { // 条件表达式
console.log('鲸渔');
num++; // 操作表达式,更新,防止死循环
}
var message = prompt('你爱我吗?');
while (message !== '我爱你') {
message = prompt('你爱我吗?');
}
alert('我也爱你啊!');
四、do-while循环
注意:先再执行循环体,再判断条件表达式,如果结果为 true,则继续执行循环体代码,如果为 false,则退出循环,至少会执行一次循环体代码
do {
// 循环体代码
} while(条件表达式);
var i = 1;
do {
console.log('鲸渔');
i++;
} while (i <= 100);
do {
var str = prompt('叫爸爸');
} while (str != '鲸渔爸爸');
alert('乖儿子');
五、continue、break
- continue
continue 关键字用于立即跳出本次循环,继续执行剩余次数的循环
for (var i = 1; i <= 5; i++) {
if (i == 3) {
console.log('这个包子有虫子,扔掉');
continue; // 跳出本次循环,跳出的是第3次循环
}
console.log('我正在吃第' + i + '个包子呢');
}
// 求1~100之间,除了能被7整除之外的整数和
var sum = 0;
for (var i = 1; i <= 100; i++) {
if (i % 7 == 0) {
continue;
}
sum += i;
}
console.log(sum);
- break
break 关键字用于立即跳出整个循环(循环结束)
for (var i = 1; i <= 5; i++) {
if (i == 3) {
console.log('不好包子有毒');
break; // 直接退出整个for 循环,跳到整个for下面的语句
}
console.log('我正在吃第' + i + '个包子呢');
}
🐋鲸渔Time🐱👤
写一个等腰空心三角形
var arr = prompt('三角形多少行') - 0;
var kong = '';
for (var i = 1; i <= arr; i++) {
for (var j = 0; j <= arr - i; j++) {
if (j !== arr - i) {
kong += ' ';
} else {
kong += '0';
}
}
for (var a = 1; a <= 2 * (i - 1); a++) {
if (i !== arr) {
if (a !== 2 * (i - 1)) {
kong += ' ';
} else {
kong += '0';
}
} else {
kong += '0';
}
}
kong += '\n';
}
console.log(kong);
写一个ATM机
var arr = parseFloat(prompt('1.存钱' + '\n' + '2.取钱' + '\n' + '3.余额查询' + '\n' + '4.退出'));
var money = 0;
while (arr !== 4) {
switch (arr) {
case 1:
money += parseFloat(prompt('存多少') - 0);
alert('你的余额是' + money);
break;
case 2:
var lost = parseFloat(prompt('取多少') - 0);
while (lost > money) {
lost = parseFloat(prompt('你的余额是' + money + '请重新输入') - 0);
}
money -= lost;
alert('你的余额是' + money);
break;
case 3:
alert('你的余额是' + money);
break;
default:
break;
}
arr = parseFloat(prompt('1.存钱' + '\n' + '2.取钱' + '\n' + '3.余额查询' + '\n' + '4.退出'));
}