for语句的语法
- for的圆括号中有三个表达式:
1. 表达式var i = 1; 表示定义一个“循环变量”i,并赋值为1。
2. 表达式i <= 10; 表示继续执行循环的条件,只要这个条件为真,则会一直执行。
3. 表达式i++用来更新循环变量,使循环变量的值越来越趋向终点。
for语句的执行机理
- 首先会执行语句①。
- 然后判断语句②是否满足,如果满足则进入循环体,执行语句③,如果不满足则退出循环。
- 语句体中的语句执行完毕后,执行语句④。
- 再次判断语句②是否满足,如果满足则进入循环体,执行语句③,如果不满足则退出循环。
- ……
while循环语句
- while语句也是一种循环结构,是一种“不定范围”循环,和for循环各有不同的用武之地。
- while语句事先不指定循环开始、结束的范围,只要测试条件满足,就一直执行循环体。
while循环注意事项
- while循环没有显式定义循环变量,必须自己在while循环外先定义好循环变量,有时甚至可以没有循环变量。
- 循环体内的语句,必须使循环测试条件趋向不成立,否则会死循环。
break和continue
- break表示立即终止循环,break用在while语句中,通常和while(true){}搭配使用。
- continue用于跳过循环中的一个迭代,并继续执行循环中的下一个迭代。for循环更经常使用continue。
do while循环
- do while循环是一种“后测试循环语句”。它不同于for循环和while循环每次都是“先测试条件是否满足,然后执行循环体”,do-while循环是“先执行循环体,然后测试条件是否满足”。
do-while循环将循环执行条件写到了循环体的后面,这样一来,循环体一定会至少执行一次,然后再检测循环执行条件是否为true,决定是否继续执行循环体。
猜数字小游戏
- 随机生成一个2到99的数字,让用户猜测这个数字是几,用户输入自己的猜测之后,提示“输入的数字太大了”或“输入的数字太小了”,不断重复这个过程,直到用户准确猜到这个数字。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 随机一个数字,2~99之间
var answer = parseInt(Math.random() * 98) + 2;
// 此时范围的最小值和最大值,这个数值是用来提示用户的
var min = 1;
var max = 100;
do {
// 询问用户猜测的数字
var n = Number(prompt('请猜测数字' + min + '~' + max));
// 验证用户输入的数字是否在范围内
if (n <= min || n >= max) {
alert('你输入的数字不在范围内');
// 不在区间内,直接放弃这次循环,就开启下一次迭代
continue;
}
// 判断用户输入的数字和answer的关系
if (n > answer) {
alert('你输入的数字太大了');
// 因为用户输入的数字较大,所以可以让此时的最大范围数字变为用户输入的值
max = n;
} else if (n < answer) {
alert('你输入的数字太小了');
// 因为用户输入的数字较小,所以可以让此时的最小范围数字变为用户输入的值
min = n;
}
} while (n != answer);
// 出了do while循环,就说明n和answer相等了,因为只有相等了,才能出循环。
alert('恭喜猜对了!');
</script>
</body>
</html>
随机数函数
- 先学习随机数函数。得到0到1之间的小数:
- 得到[a, b]区间的整数,公式:
- 请编写程序,随机生成两个变量dx和dy,它们均在[-4,4] 区间随机取值,但要求dx和dy不能同时为0。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 随机两个变量,dx和dy,他们都在[-4, 4]之间随机取值,但是不能都为0
do {
var dx = parseInt(Math.random() * 9) - 4;
var dy = parseInt(Math.random() * 9) - 4;
} while (dx == 0 && dy == 0)
// 只要你出循环,就保证dx和dy不都是0
console.log(dx, dy);
</script>
</body>
</html>