分支判定
为了让程序拥有自主选择能力,JS语言加入了分支判定功能。可以让程序决定执行哪一段代码,不执行哪一段代码,从而实现程序结果的多样化。
分支判定有两种:if
和switch
- if语句
语法1:
if (表达式) { 代码段 } else { 代码段 }
运行规则:
当表达式结果为真时,执行if代码段;当表达式结果为假时,执行else代码段。
语法2:
if (表达式) {代码段}
运行规则:
当表达式结果为真时,执行if代码段;当表达式结果为假时,不执行任何内容。
语法3:
if (表达式1) {
代码段1
} else if (表达式2) {
代码段2
} else if (表达式3) {
代码段3
} ...
运行规则:
当表达式1为真时,执行代码段1,执行完毕跳出分支判断。当表达式1为假时,去判定表达式2,为真时,执行代码段2。当表达式2为假时,去判定表达式3,为真时,执行代码段3。当表达式3为假时,继续往后判定。 直到遇见为真的表达式,就执行对应的代码段,或者都不符合,就不会进入分支代码。
语法4:
if (表达式1) {
代码段1
} else if (表达式2) {
代码段2
} else {
代码段3
}
运行规则:
当表达式1为真时,执行代码段1。否则判定表达式2,为真时,执行代码段2。否则执行代码段3。都不符合,就不会进入分支代码。
注: 整个if语句由3部分组成if () {}
与 else if () {}
与 else {}
除了第一部分必须有之外,其余部分都可以省略。第三部分只能出现一次,第二部分可以出现多次。
- switch语句
语法:
switch (表达式) {
case 结果1:
code...
break;
case 结果2:
code...
break;
case 结果3:
code...
break;
case 结果4:
code...
break;
case 结果5:
code...
break;
case ……
code...
break;
default:
code...
break;
}
执行规则:
- 当表达式的结果为对应的case结果时,执行对应的代码
- case 后面的内容最终必须是固定的值,不可以是范围表达式
- break的作用是停止代码,跳出switch语句
- default的作用是当任何case都没有对应时,执行default下面的代码
- 在比较case的值时,使用的是全等比较
注: 如果没有break,则会出现落空
现象。 落空现象: 指的是会执行下一个case语句中的代码的现象。
- 三元运算符(三目运算符)
指的是对if else语句的一种简化方式
语法:
条件 ? 结果1 : 结果2
运行规则:
当条件为真时,执行结果1;当条件为假时,执行结果2。
- 循环结构
当有大量的重复性的代码时,我们可以使用循环语句来解决。
while循环
语法:
while (条件) {
code...
}
注: 一定记得在语句中改变条件表达式中的变量,否则会死循环。
do-while循环
语法:
do {
code...
} while (条件);
注:一定记得在语句中改变条件表达式中的变量,否则会死循环。
注:无论条件是否达成,都会执行一次do里面的语句。
for循环
语法:
for (初始化; 条件; 改变初始化条件) {
code...
}
注: 改变初始化条件不一定是 i++。 i += 2也是可以的
注: 该语法有变种写法,但是不推荐使用
注: 循环变量在for循环结束之后依旧可用
- break
break关键字,用于打断循环的执行。
for (var i = 0; i < 10; i++) {
if (i === 3) {
break;
}
console.log(i);
}
以上程序只输出0、1、2,当i为3的时候,i === 3
结果为真,将执行break,打断循环的执行。
- continue
continue关键字,用于跳过当前层循环,进入下一次循环。
for (var i = 0; i < 5; i++) {
if (i === 3) {
continue;
}
console.log(i);
}
以上程序输出结果为0、1、2、4,因为当i为3时,i === 3
为真,将执行continue,跳过i为3的这层循环,即跳过当前层循环,进入下一层循环。
注: continue和break只能够用在循环体内
案例
根据用户输入的年龄,判定用户是否成年
var year = +prompt("请输入年龄");
if(year >= 18){
alert("恭喜你,你成年了");
}else{
alert("很抱歉,你未成年");
}
根据用户输入的成绩,判定成绩等级
var score = +prompt("请输入分数");
if(score >= 0 && score <= 100){
if(score < 60){
alert("不及格");
}
else if(score < 70){
alert("及格");
}
else if(score < 80){
alert("良好");
}
else if(score < 90){
alert("优秀");
}
else if(score <= 100){
alert("非常优秀");
}
}else{
alert("输入的分数不规范");
}
根据用户输入的星期,判定星期几
var week = prompt("请输入0~6之间的整数,包括0和6");
switch(week){
case "0":
alert("今天是星期天");
break;
case "1":
alert("今天是星期一");
break;
case "2":
alert("今天是星期二");
break;
case "3":
alert("今天是星期三");
break;
case "4":
alert("今天是星期四");
break;
case "5":
alert("今天是星期五");
break;
case "6":
alert("今天是星期六");
break;
default:
alert("您输入的数字不在规定范围内!");
break;
}
根据用户输入的年份,判定是否是闰年
var year = +prompt("请输入年份");
if(year % 4 ===0 && year % 100 != 0 || year % 400 === 0){
alert(year + "是闰年");
}else{
alert(year + "不是闰年");
}
1~100所有偶数和
var sum = 0;
for (var i = 1;i <= 100;i++){
if(i % 2 === 0){
// console.log(i);
sum += i;
}
}
console.log("1~100所有偶数和为:" + sum);
1~100所有数的和
var i = 1;
var sum = 0;
do{
sum += i;
// console.log(i++);
}while(i <= 100);
console.log("1~100所有数的和为:" + sum);
var i = 1;
var sum = 0;
while(i<=100){
sum += i;
i++;
// console.log(i++);
}
console.log("1~100所有数的和为:" + sum);
打印20个素数
方式1:while循环
// 打印20个素数——while循环
var start = 56;
// 定义一个变量,用于记录质数的个数
var count = 0;
// 循环判定,只要count不是20,循环继续
while(count < 20){
// 每一次循环在判定一个新的数字是否是质数,判定的就是start所以要让start++
start++;
//下面代码在判定start变量所保存的数是否是质数
var num = start;
var isZ = true;
for(var i = 2; i < num; i++){
if(num % i === 0){
isZ = false;
break;
}
}
if(isZ === true){
console.log(num);
// 累计
count++;
}
}
方式2:for循环
// 打印20个素数——for循环
var start = 123;
// for循环
for (var count = 0; count < 20; start++){
var num = start;
var isZ = true;
for(var i = 2; i < num; i++){
if(num % i === 0){
isZ = false;
break;
}
}
if(isZ === true){
console.log(num);
count++;
}
}
打印任意范围内的素数
var min = +prompt("请输入素数范围最小值","");
var max = +prompt("请输入素数范围最大值","");
for(var i = min ; i < max ; i++){
for(var j = 2 ; j < i ; j++){
if(i % j === 0){
break;
}else if(j === i-1){
document.write(i+" ");
}
}
}
猜数字游戏
// 生成一个0~100的随机数
var random = parseInt(Math.random() * 100);
var startNum = 0;
var endNum = 100;
// console.log(random);
do{
// 提示用户
var num = +prompt("请输入一个"+startNum+"~"+endNum+"之间的数字");
if(random > num){
alert("猜小了,游戏继续");
startNum = num;
}else if(random < num){
alert("猜大了,游戏继续");
endNum = num;
}else{
alert("恭喜你猜对了,游戏结束");
}
}while(num != random);
判断一个整数,属于哪个范围:大于0;小于0;等于0
var i = +prompt("请输入一个数","");
if(i > 0){
alert("大于0");
}else if(i < 0){
alert("小于0");
}else if(i === 0){
alert("等于0");
}
判断一个整数是偶数还是奇数,并输出判断结果
var i = +prompt("请输入一个整数","");
if(i % 2 == 0){
alert(i + "是偶数");
}else if(i % 2 != 0){
alert(i + "是奇数");
}
可以简化成:
var i = +prompt("请输入一个整数","");
alert((i % 2 == 0) ? "偶数" : "奇数");
开发一款软件,根据公式(身高-108)*
2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适
方式1:
var i = +prompt("请输入你的身高,单位cm","");
var k = +prompt("请输入你的体重,单位kg","");
k *= 2;
var j = (i - 108) * 2;
if(k >= j-10 && k <= j+10){
alert("体重合格");
}else if(k < j-10){
alert("偏瘦");
}else if(k > j+10){
alert("偏胖");
}
方式2:
var height = +prompt("请输入你的身高(厘米)");
var weight = +prompt("请输入你的体重(斤)");
// 根据公式(身高-108)*2=体重
var standard = (height - 108) * 2;
if(weight > standard){
if(weight - standard > 10){
alert("该减肥了");
}else{
alert("标准体重");
}
}else if(weight < standard){
if(standard - weight > 10){
alert("偏瘦");
}else{
alert("标准体重");
}
}
根据输入的三个数字,判断是这一年的第几天
var year = +prompt("请输入年份","");
var month = +prompt("请输入"+year+"年的第几个月","");
var day = +prompt("请输入"+year+"年"+month+"月的几号","");
var isRun;
var count = 0;
// 判断是闰年还是平年
if(year % 4 === 0 && year % 100 != 0 || year % 400 === 0){
console.log("闰年,366天");
isRun = true;
}else{
console.log("平年,365天");
isRun = false;
}
for(var i = 0 ; i < month ; i++){
switch(i){
// 闰年加29天,平年加28天
case 2:
if(isRun){
// 闰年
count += 29;
}else{
// 平年
count += 28;
}
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
count += 31;
break;
case 4:
case 6:
case 9:
case 11:
count += 30;
break;
}
}
// 将之前的月份的天数加上当月已过天数
count += day;
alert(count);
可通过使用三元运算符来简化程序:
var year = +prompt("请输入年份","");
var month = +prompt("请输入"+year+"年的第几个月","");
var day = +prompt("请输入"+year+"年"+month+"月的几号","");
var isRun;
var count = 0;
// 判断是闰年还是平年
isRun = year % 4 === 0 && year % 100 != 0 || year % 400 === 0 ? true : false;
for(var i = 0 ; i < month ; i++){
switch(i){
// 闰年加29天,平年加28天
case 2:
// 简化,使用三目运算
count += isRun ? 29 : 28;
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
count += 31;
break;
case 4:
case 6:
case 9:
case 11:
count += 30;
break;
}
}
// 将之前的月份的天数加上当月已过天数
count += day;
alert(count);