目录
一、JS条件语句
条件语句用于基于不同的条件来执行不同的动作。
通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。
在 JavaScript 中,我们可使用以下条件语句:
(1)if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
(2)if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
(3)if...else if....else 语句- 使用该语句来选择多个代码块之一来执行
(4)switch 语句 - 使用该语句来选择多个代码块之一来执行
1.if语句
if语句的语法:
if (condition)
{
//当condition(条件)为 true 时执行的代码
}
例如:
<script>
var age = prompt('输入年龄');
if (age >= 18) {
alert('可以进入网吧');
}
</script>
这个案例实现的功能:
从键盘输入一个年龄,把年龄存储在age变量里(此时的age是一个字符串),if语句执行的条件是age>=18(此处通过运算符对age进行了隐式转换--------数值型),当不满足条件时不执行任何语句。
2.if…else 语句
if…else 语句的语法:
if (condition) {
//当条件为 true 时执行的代码
} else {
//当条件为 false 时执行的代码
}
例如:
<script>
var age = prompt('输入年龄');
if (age >= 18) {
alert('可以进入网吧');
} else {
alert('未满18');
}
</script>
这是对上一个案例的补充----------补充了不满足条件时执行的语句。
3.if…else if…else 语句
if…else if…else 语句语法:
if (condition1) {
//当条件 1 为 true 时执行的代码
} else if (condition2) {
//当条件 2 为 true 时执行的代码
} else {
//当条件 1 和 条件 2 都不为 true 时执行的代码
}
例如:
<script>
var score = prompt('请输入成绩:');
if (score >= 90) {
alert('A');
} else if (80 <= score) {
alert('B');
} else if (70 <= score) {
alert('C');
} else if (60 <= score) {
alert('D');
} else {
alert('E');
}
</script>
此案例实现的功能:
(1)从键盘输入一个成绩判断等级,90分以上为’'A",80-90分为"B",70-80分为"C",60-70分为"D",60分以下为"E",;
(2)把成绩赋给score这个变量;
(3)第一步判断成绩是否大于等于90,如果满足条件,弹出内容为"A"的警告框;
(4)如果不满足第一个条件(即成绩小于90),再判断是否满足成绩大于等于80这个条件,以此类推;
(5)if…else if…else 语句的一个好处就是它如果不满足上一个条件,则会在上一个条件的补集中判断下一个条件是否满足。这就是else if 后面的条件只写一个的原因。
4.switch 语句
switch 语句的语法:
<script>
switch(表达式)
{
case 常量1:
//执行代码块 1
break;
case 常量2:
//执行代码块 2
break;
default:
//与 case 常量1 和 case 常量2 不同时执行的代码
}
</script>
例如:
<script>
var num = prompt('请输入一个数字:');
switch (num * 1) {
case 1:
alert('星期一');
break;
case 2:
alert('星期二');
break;
case 3:
alert('星期三');
break;
case 4:
alert('星期四');
break;
case 5:
alert('星期五');
break;
default:
alert('周末');
break;
}
</script>
此案例实现的功能:
从键盘输入1-7的数字,弹出对应的星期。
二、JS循环语句
(1)for - 循环代码块一定的次数;
(2)while - 当指定的条件为 true 时循环指定的代码块;
(3)do/while - 同样当指定的条件为 true 时循环指定的代码块。
1.for循环
for循环的语法:
for (初始变化量; 条件表达式; 操作表达式) {
//被执行的代码块
}
例如-------求1-100的整数和
<script>
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum = sum + i;
// sum += i;
}
</script>
(1)声明一个变量存储计算的和sum;
(2)第一步计算0+1,第二步计算0+1+2,第三步计算0+1+2+3,依此类推,共需计算100次。
(3)每次的操作表达式都是i++,所以i从1加到100就是执行100次循环体
2.while 循环
while循环的语法:
while (条件)
{
需要执行的代码
}
只要指定条件为 true,循环就可以一直执行代码块,所以一般要将控制循环的变量写在循环体里。
如果忘记增加条件中所用变量的值,该循环永远不会结束。这可能导致浏览器崩溃。
下面是用while循环实现的1-100求和:
<script>
var j = 1;
var sum = 0;
while (j <= 100) {
sum += j;
j++;
}
console.log('和为:' + sum);
</script>
while循环其实就是相当于for循环把初始变量写在循环上面,把操作表达式写在循环体里,把条件表达式写在while的括号里。
3.do/while 循环
do/while 循环是while循环的变体,他俩的区别在于,do/while 循环不管条件是否满足,它都会执行一次循环体,从它的语法中可以很容易看到:
do
{
需要执行的代码
}
while (条件);
以顺序结构从上往下执行do语句,执行完后判断条件是否满足,若满足,则返回重复执行大括号了的循环语句。
例如:
<script>
var x = "",
i = 0;
do {
x = x + "该数字为 " + i + "\n";
i++;
}
while (i < 0)
console.log(x);
</script>
上述条件是i<0,变量初始值是0,不满足条件,但是最后循环体还是会执行一遍,结果是:
三、break和continue语句
break 语句用于跳出整个循环。
continue 用于跳过当前这次循环。
1.break语句
上面讲的switch语句,每条case语句里都有break语句,这时的break就用于跳出整个switch语句----------如果没有break语句将会执行匹配case后面的所有语句,使得switch语句没有意义。
例如:
<script>
var num = prompt('请输入一个数字:');
switch (num * 1) {
case 1:
console.log('星期一');
case 2:
console.log('星期二');
case 3:
console.log('星期三');
case 4:
console.log('星期四');
case 5:
console.log('星期五');
default:
console.log('周末');
break;
}
</script>
当我输入3时,出现的结果:
所以这就证明了break语句的重要性。
2.continue语句
它用于跳出当前这次循环。
<script>
var x = '';
for (i = 0; i <= 5; i++) {
if (i == 3) continue;
x = i + "\n";
console.log(x);
}
</script>
(1)这个循环的循环次数是6次;
(2)每次都把i的值赋给x,i每次自加一;
(3)当i=3时,会跳出这次循环,不执行循环体的内容,继续下一次循环;
所以最后的结果:
该案例循环还是执行了6次,只是当i=3时,没有执行下面的输出语句。
四、作业
下面是三个通过以上知识可以完成的作业:
1.输出1000以内的水仙花数
水仙花数:是一个三位数,它等于个位数的三次方、十位数的三次方、百位数的三次方之和。例如:1^3 + 5^3+ 3^3 = 153。
解题如下:
<script>
for (i = 100; i < 1000; i++) {
var ge = i % 10;
var shi = (i % 100 - ge) / 10;
var bai = parseInt(i / 100);
var sum = ge * ge * ge + shi * shi * shi + bai * bai * bai;
if (i == sum) console.log(i + '\n');
}
</script>
(1)水仙花是三位数,所以判断100-999的数即可;
(2)个位就是原数除以10的余数;
(3)十位就是除以100的余数减去个位再除以10;
(4)百位就是对原数除以100的取整;
(5)最后判断个十百的三次方之和是否等于原数,若是,则输出。
最后的输出结果:
2.输出100以内的所有完数
完数:一个数恰好等于它的真因子之和,这个数就是完数。
例如:6的因子有:1,2,3,6;除过它本身,1+2+3=6,说明6就是完数。
<script>
var n = 1;
for (i = 1; i <= 100; i++) {
var sum = 0;
for (j = 1; j < i; j++) {
if (i % j == 0) sum += j;
}
if (sum == i) {
console.log('第' + n + '个完数是:' + i);
n++;
}
}
</script>
(1)外循环,依次判断1-100所有数;
(2)内循环,取出除过它本身的所有因子并相加;
(3)判断因子和是否与本身相等,若相等则输出;
(4)n是用来记录完数数量的变量,每找到一个完数,给它加一。
最后的结果是:
所以100以内只有两个完数。
3.计算a+aa+aaa+…+aa…aa
其中a的值和最后一位a的位数由键盘输入。
<script>
var a = parseInt(prompt('输入a的值:'));
var n = parseInt(prompt('输入a的位数:'));
var sum = a,
temp = a;
for (var i = 1; i < n; i++) {
if (n > 1) {
a = a * 10 + temp;
sum = sum + a;
}
}
console.log(sum);
</script>
首先做分析可得-------后一项是前一项乘10加a的值得来,所以只需要计算下一位的值再把这个值赋给sum这个容器即可。
(1)n是位数,第一项不需要计算,直接赋给sum,所以需要计算才能得到的数有n-1位,从而确定循环次数。
(2)程序中a充当的角色是被加数,所以要把a的值存在temp里参加运算。
五、总结
这部分内容是学习任意一门语言的必经之路,通过实现各种功能可以加强对这部分内容的巩固和应用。