文章目录
一、JS条件语句
1、if语句
if语句的语法:
if(条件表达式) { 代码段 }
例如:
<script>
//从页面输入一个数,判断该数是奇数还是偶数
var pn = parseInt(prompt('请输入一个整数'))
if (pn % 2 === 0) {
alert('是偶数')
}
</script>
此案例实现的功能:
从页面中输入一个数,把这个数存在pn变量空间中,若此时pn对2取余为零,则说明这个数为偶数
2、if…else 语句
if…else 语句的语法:
if(条件表达式) {
代码段1
}else {
代码段2
}
例如:
<script>
//从页面输入一个数,判断该数是奇数还是偶数
var pn = parseInt(prompt('请输入一个整数'))
if (pn % 2 === 0) {
alert('是偶数')
}else {
alert('是奇数')
}
</script>
案例说明:补充了上一个案例条件不满足时执行的语句
3、if…else if…else 语句
if…else if…else 语句的语法:
if(表达式1){
//表达式1为真时执行的代码
}else if(表达式2){
//表达式2为真时执行的代码
}else{
//表达式1和表达式2都为假时执行的代码
}
例如:
<script>
var s = parseFloat(prompt('请输入一个成绩'))
var msg = ''
if (s >= 90) {
msg = 'A'
} else if (s >= 80) {
msg = 'B'
} else if (s >= 70) {
msg = 'C'
} else if (s >= 60) {
msg = 'D'
} else if (s < 60) {
msg = 'E'
}
alert(msg)
</script>
此案例实现的功能:
(1)从键盘输入一个成绩判断等级,90分以上为’'A",80-90分为"B",70-80分为"C",60-70分为"D",60分以下为"E",;
(2)把成绩赋给s这个变量;
(3)第一步判断成绩是否大于等于90,如果满足条件,弹出内容为"A"的警告框;
(4)如果不满足第一个条件(即成绩小于90),再判断是否满足成绩大于等于80这个条件,以此类推;
(5)if…else if…else 语句的如果不满足上一个条件,则依次判断下面的条件,直到找到满足条件的表达式。
4、switch 语句
<script>
switch (表达式) {
case 常量1:
//执行代码块1
break;
case 常量2:
//执行代码块2
break;
default:
//与 case 常量1 和 case 常量2 不同时执行的代码
}
</script>
- 常量的类型必须和表达式的结果相一致
- case后的常量不允许重复
- break跳出当前程序
- switch-case必须和break相结合使用,不然没有选择分支的作用
例如:
<script>
var a = prompt('请输入一个数字')
switch (a*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;表达式2;表达式3) {
循环体语句
}
例如:求1-100的整数和
<script>
var sum = 0
for (var i = 0; i <= 100; i++) {
sum += i
}
console.log(sum)
</script>
(1)声明一个变量存储计算的和sum;
(2)第一步计算0+1,第二步计算0+1+2,第三步计算0+1+2+3,依此类推,一共需要计算100次。
(3)每次的操作表达式都是i++,所以i从1加到100就是执行100次循环体
2. while循环
while循环的语法:
while(条件表达式) {
循环体语句;
}
只要满足条件表达式,循环将一直执行代码块,因此一般要将控制循环的变量写在循环体中
如果忘记增加条件中所用变量的值,该循环永远不会结束。这可能导致浏览器崩溃。
例如:用while实现1-100求和
<script>
var sum = 0
var i=1
while (i <= 100) {
sum += i;
i++
}
console.log(sum)
</script>
while循环其实就是相当于for循环把初始变量写在循环上面,把操作表达式写在循环体里,把条件表达式写在while的括号里。
3. do/while 循环
do/while循环的语法:
do{
循环体语句
}while (条件表达式);
do/while 循环是while循环的变体,它们的区别在于,do/while 循环不管条件是否满足,它都会执行一次循环体
以顺序结构从上往下执行do语句,执行完后判断条件是否满足,若满足,则返回重复执行大括号了的循环语句。
例如:
<script>
var i = 0;
var x='';
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 a = prompt('请输入一个数字')
switch (a*1) {
case 1:
console.log('星期一')
case 2:
console.log('星期二')
case 3:
console.log('星期三')
case 4:
console.log('星期四')
case 5:
console.log('星期五')
default:
console.log('周末')
}
</script>
当输入4时,出现的结果:
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、输出1000以内的所有’水仙花数’。(‘水仙花数’是一个三位数,每位数字的立方和等于该数)
eg:153 = 1x1x1+5x5x5+3x3x3
<script>
var n
for (n = 100; n <= 999; n++) {
var i = n % 10
var j = parseInt(n / 10 % 10)
var k = parseInt(n / 100)
if (i * i * i + j * j * j + k * k * k == n) {
console.log('三位数的水仙花数有:',n)
}
}
</script>
(1)水仙花是三位数,所以判断100-999的数即可;
(2)个位就是原数除以10的余数;
(3)十位就是除以10再对10取余最后取整
(4)百位就是对原数除以100的取整;
(5)最后判断个十百的三次方之和是否等于原数,若是,则输出。
最后结果如下:
2.输出100以内的所有完数
2、输出100以内的所有’完数’。 (‘完数’是该数等于它的所有因子之和(因子不包含它本身))
eg:6 = 1+2+3
<script>
var n,j
for (n = 2; n <= 100; n++) {
var s = 0
for (j = 1; j < n; j++) {
if (n % j == 0) {
s += j
}
}
if (s == n) {
console.log('100以内的完数有:', n)
}
}
</script>
(1)外循环,依次判断2-100所有数;
(2)内循环,取出除过它本身的所有因子并相加;
(3)判断因子和是否与本身相等,若相等则输出;
最后的结果是:
3.计算a+aa+aaa+…+aa…aa
3、计算a+aa+aaa+aaaa+…aaa的值。a的值、位数从键盘上输入
eg:a=2,n=5
2+22+222+2222+22222 =
<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里参加运算。