JavaScript中的流程控制语句,跟其他编程语言是一样的,主要有3种:
(1)顺序结构;
(2)分支结构;
(3)循环结构;
一、分支结构
在JavaScript中,分支结构共有5种:
(1)if(条件表达式)...语句;
(2)if(条件表达式)……else语句;
(3)if(条件表达式)……else if(条件表达式)……语句;适合检查多种条件
(4)if语句的嵌套;
(5)switch语句;
执行思路,利用我们表达式的值,和case后面的选项相匹配,如果匹配上,就执行该case里面的语句,如果都没有匹配上,那么执行default里面的语句;
switch (表达式) {
case value1:
执行语句1;
break;
case value2:
执行语句2;
break;
...
default:
执行最后的语句;
}
switch语句和if...else if 语句..的区别:
- 一般情况下,它们两个语句可以相互替换
- switch….case语句通常处理case为比较确定值的情况,而if….else….语句更加灵活,常用于范围判断(大于、等于某个范围)
- switch语句进行条件判断后直接执行到程序的条件语句,效率更高。而if….else语句有几种条件,就得判断多少次。
- 当分支比较少时,if…else语句的执行效率比switch语句高。 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰
条件表达式:
条件表达式? 表达式1 :表达式2
执行思路:如果天剑表达式的结果为真 则返回 表达式1, 如果条件为假, 则返回 表达式2
// 如果数字小于10,则在前面添加 '0'
var time = prompt('请您输入一个0~59之间的一个数字');
var result = time < 10 ? '0' + time : time;
alert(result);
二、循环结构
在JavaScript中,循环结构总有3种:
(1)while语句;
(2)do……while语句;(先执行循环体,再去执行条件表达式,至少执行1次)
(3)for语句;
for(初始化变量;条件表达式;操作表达式){
执行语句块;
}
双重for循环,外层循环一次,里面的循环全部执行。
for(外层的初始化变量;外层的条件表达;外层的操作表达){
for(里层的初始化变量;里层的条件表达;;里层的操作表达)
{
//执行语句;
}
}
三、跳转语句
JavaScript支持的跳转语句主要有2种:
(1)break语句;
(2)continue语句;(退出当前循环)
break语句与continue语句的主要区别是:break是彻底结束循环,而continue是结束本次循环。在这一点跟其他编程语言(如C和Java)相同。
训练题:
题目1:接收用户输入的年份,如果是闰年就弹出闰年,否则弹出是平年。
算法:能够被4整除且不能整除100的为闰年,或者能够被400整除的就是闰年。
代码实现如下:
var year = prompt('请输入年份');
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
alert(year + '是闰年');
}
else {
alert(year + '是平年');
}
题目2:分别计算100以内所有奇数和偶数的和,比较简单,使用for语句就可以实现。
var even = 0;//存奇数
var odd = 0;//存偶数
for (var i = 1; i <= 100; i++) {
if (i % 2 == 0) {
odd = odd + i;
} else {
even = even + i;
}
}
console.log('1-100之间所有奇数的和:' + even);
console.log('1-100之间所有偶数的和:' + odd);
题目3:打印九九乘法表,里层循环控制每一层的个数j<=i
//打印九九乘法表
var str = '';
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
str += j + '×' + i + '=' + i * j+'\t';
}
str+='\n';
}
console.log(str);
//弹出一个提示框,你爱我吗?r如果输入你爱我,就结束提醒,如果不是,一直循环!
var message=prompt('你爱我吗?');
while(message!=='我爱你'){
message=prompt('你爱我吗');
}
alert('我也爱你啊!');
题目3:判断100~100以内的水仙花数。“水仙花数”是指一个3位数,其各位数字立方和等于该数的本身。
for (var i = 100; i < 1000; i++) {
var ge = i % 10;//提取个位数
var shi = parseInt((i / 10) % 10);//提取十位数
var bai = parseInt(i / 100);//获取百位数
if (i=== ge * ge * ge + shi * shi * shi + bai * bai * bai) {
console.log(i + '是水仙花数'+'\n');
}