JavaScript-day03

27 阅读3分钟

一、循环结构

反复执行相同或者相似的操作
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 函数名(形参,...){
    函数体/代码段;
}
  • 调用函数:
    1. 在js内部写:函数名(); - 程序员写几次就会调用几次
    2. 在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++;
    }
}