一、循环结构
反复执行相同或者相似的操作
1、循环三要素:
- 循环条件:开始-结束,循环的次数
- 循环体:做的是什么操作
- 循环变量:记录当前在哪里,并且会不断的变化
二、3种循环
1、while循环
语法:
var 循环变量=几;
while(循环条件){
循环体;
循环变量变化;
}
执行原理:首先创建出循环变量,判断循环条件,如果条件满足,则做一次循环体操作,并不会退出循环,而会回头再次判断条件满不满足,如果满足,则做一次循环体操作,直到条件不满足,才会退出循环。
- 宏观上好像感觉循环是一瞬间就结束了,但是微观上循环其实是一次一次执行的
- 在不确定循环次数的时候,需要使用死循环,while(true){死循环}
- break:退出整个循环,多半都是用来搭配死循环的
- continue:退出本次循环,下一次依然会执行
2、for循环
语法:
for(var 循环变量=几;循环条件;循环变量变化){
循环体;
}
- 死循环:for(;;){}
- while和for的区别: 他们原理上几乎没有区别,一般来说我们不确定循环次数的时候,会使用while循环-死循环,如果确定循环次数的时候,会使用for循环-大部分情况都是它
3、do...while循环
语法:
var 循环变量=几;
do{
循环体;
循环变量的变化
}while(循环条件)
while和do...while的区别: 区别只看第一次,如果第一次条件都满足,那么两者没有任何区别。但是如果第一次条件不满足,那么while一次都不会执行,而do...while至少会执行一次。
三、获取随机整数公式
var r = parseInt(Math.random()*(max - min + 1) + min)
四、function的基础
1、概念
function也叫函数也叫方法,先预定好,以后可以反复使用的代码段
2、如何使用函数:2步
- 定义/创建/声明:
function 函数名(形参,...){
函数体/代码段;
}
- 调用函数:
- 在js内部写:函数名(); - 程序员写几次就会调用几次
- 在HTML上面绑定事件:
<elem onclick="函数名()"></elem> //什么元素都可以绑定事件
(1) 不带参数的函数,用于执行一些固定的操作
(2) 带参数的函数,可以根据我们传入的实参不同,做的略微不同
3、何时使用函数:
- 不希望打开页面立即执行
- 希望用户来触发,提升用户的体验感
函数是js的第一等公民
4、循环和函数的区别
- 循环:几乎是一瞬间就完成了
- 函数:需要调用后才会执行
五、案例
// 输出1000句hello 方法一:while
/* var i = 1;
while(i<=1000) {
console.log(i + "hello");
i++;
} */
// 方法二 for
for(var i = 1; i <= 1000; i++) {
console.log(i + "hello");
}
// 求1-1000所有数字和 方法一:while
/* var i = 1,
sum = 0;
while (i <= 1000) {
sum += i;
i++
}
console.log(sum); */
// 方法二:for
for(var i = 1,sum = 0; i <= 1000; i++) {
sum += i;
}
console.log(sum);
// 求1-1000所有偶数的和 方法一:while
/* var i = 1,
sum = 0;
while(i <= 1000) {
if(i % 2 == 0) {
sum += i;
}
i++;
}
console.log(sum); */
// 方法二:for
for(var i = 1,sum = 0; i <= 1000; i++) {
if (i % 2 == 0) {
sum += i;
}
}
console.log(sum);
// 猜数字小游戏1-100 方法一:while
var r = parseInt(Math.random()*(100 - 1 + 1) + 1);
var hp;
var dif = prompt("请选择难度:\n1.简单;\n2.一般;\n3.困难");
hp = dif == 1? 15 : dif == 2 ? 10 : dif == 3 ? 5 : 1
while(1) {
if (hp > 0) {
var user = parseInt(prompt("请输入您要猜的数字:目前生命值为" + hp));
if (!isNaN(user)) {
if(user > r) {
alert("大了");
hp--;
} else if (user < r) {
alert("小了");
hp--;
} else {
alert("对了");
break;
}
} else {
alert("恶意输入!")
}
} else {
alert("没有生命了");
break;
}
}
// 方法二:把while(1)改为for(;;)
// 求1/1+1/3+...+1/999的和
for(var i = 1,sum = 0; i <= 999; i+=2) {
sum += 1/i;
}
console.log(sum);
//九九乘法表
for(var j = 1; j <= 9; j++) {
for(var i = 1,str = ""; i <=j; i++) {
str += i + "*" + j + "=" + i*j + " "
}
console.log(str);
}
// 让用户输入一个年份,我们来输出这个年份之后的5个闰年
var year = prompt("请输入一个年份:");
count = 0;
while(1) {
if(count == 5){break}
year++;
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
console.log(year);
count++;
}
}