判断
条件语句
1) if语句的基本使用
2) if else if多条件分支
3)if语句算法题
4) switch语句
5)三元运算符
if语句
if语句是最简单的条件语句,也称选择语句。
比如我考试成绩好,父母就会给我们奖励。
语法一
if(测试条件) {
//代码块
//满足测试条件为true时执行这里
}
例子
let age = Number(prompt("请输入您的年龄"));//点击确定,返回输入内容
if (age < 18) {
alert("您还没有成年,禁止入内")
}
语法二
结合else一起使用,表示
如果.....就.......否则...
.比如我考试成绩非常好,父母就会给我们奖励,否则就会给我惩罚。
if( 测试条件 ){
//语句块1
//当测试条件为真,执行这里
}else{
//语句块2
//当测试条件为假,执行这里
}
例子1
用户输入数字 大于18已经成年 小于18未成年
let age = Number(prompt("请输入您的年龄")); //点击确定,返回输入内容
//点击取消,返回null
if (age < 18) {
alert("您还没有成年")
} else{
alert("您已成年,请提供您的身份证号")
}
例子2
用户输入一个数字,如果这个数字是偶数,则弹出对话框 , 显示“偶数”,否则弹出对话框显示“奇数”
//用户输入数字 判断数字是偶数还是奇数
let num = Number(prompt("请输入一个数字"));
//书写if语句进行判断
if (num % 2 === 0) {
alert("偶数");
} else {
alert("奇数");
}
if语句执行流程图
例子3
//让用户输入年龄
let age = Number(prompt("请输入年龄"));
//判断
if (age >= 18 && age <= 70) {
alert("可以考驾照");
} else {
alert("年龄不符合要求");
}
//一定会选择其中一条路进行选择
看清楚哪些语句是If语句体中的语句
let num = Number(prompt("请输入一个整数"));
if(num > 6){
alert("这个数字大于6");
}
if(num % 2 === 0){
alert("这个数字是偶数");
}
alert("再见");
//会进行两步判断 但是一定会弹出alert("再见")
如果if语句体中只有一行
语句,则可以省略大括号和换行
//让用户输入年龄
let num = Number(prompt("请输入一个整数"));
if (num > 6) alert("这个数字大于6");
if (num % 2 === 0) alert("这个数字是偶数");
alert("再见");
语法三
else if()条件分支“暗含”不符合之前所有条件
,要深刻理解什么叫“否则如果
”
if( 测试条件1 ){
//当测试条件是1为true时执行
}else if( 测试条件2 ){
//当测试条件是1为false时 测试条件2为true时执行
}else if( 测试条件3 ){
//当测试条件是2为false时 测试条件3为true时执行
}
......
else{
//当所有测试表达式都为false时执行
}
例子1
输入成绩 判断是什么水平
let score = Number(prompt("请输入你的考试成绩"));
if (score < 60) {
alert("不及格");
} else if (score < 80) {
alert("及格"); //尽管这里条件满足 也不会走到 只会从上往下 选择一条分支语句
} else if (score < 100) {
alert("优秀");
} else if (score < 120) {
alert("逆天");
} else {
alert("我什么都不知道");
}
例子2
BMI指数(Body Mass Index,身体质量指数)是用体重(以公斤为单位)除以身高(以米为单
位)的平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的标准。
//要求用户输入体重
let weight = Number(prompt("请输入你的体重,以公斤为单位"));
//要求用户输入身高
let height = Number(prompt("请输入你的身高,以米为单位"));
//计算BMI身体指数
let bmi = weight / Math.pow(height,2);
//弹出BMI指数
alert("您的BMI指数是" + bmi);
//分档
if(bmi < 18.5){
alert("偏瘦");
}else if(bmi < 24){
alert("正常");
}else if(bmi < 28){
alert("肥胖");
}else if(bmi < 32){
alert("更肥胖")
}else{
alert("非常肥胖")
}
if语句算法题
判断水仙花数
水仙花数是这样的一个3位数:它的每个数位的数字的立方和等于它本身。
153 13 + 53 + 33 =153 是水仙花数
154 13 + 53 + 43 =190 不是水仙花数
n — 对它进行拆位处理
方法1
数学方法
153 ---> 1 5 3
//百位是原数字除以100取整
//十位是原数字除以10取整,再与10求模
//个位是原数字与10求模
方法2
字符串方法
//直接将原数字变为字符串,然后使用charAt()方法得到每个数位的值
<script>
//要求用户输入一个三位数
let n = Number(prompt("请输入一个三位数"));
// 对用户输入的数值,进行合法性的验证
if (!isNaN(n) && n >= 100 && n <= 999) {
//当用户输入的数字是合法
//数学方法
// 百位
console.log(Math.floor(n / 100));
//十位
console.log(Math.floor(n / 10) % 10);
//个位
console.log(n % 10);
} else {
//输入不合法
alert("您输入的数字不合法");
}
</script>
<script>
//要求用户输入一个三位数
let n = Number(prompt("请输入一个三位数"));
// 对用户输入的数值,进行合法性的验证
if (!isNaN(n) && n >= 100 && n <= 999) {
//当用户输入的数字是合法
//数学方法
// 百位
let a = Math.floor(n / 100);
//十位
let b = Math.floor(n / 10) % 10;
//个位
let c = n % 10;
//根据水仙花数的条件去进行判断
if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == n) {
alert(n + "是水仙花数");
}else{
alert(n + "不是水仙花数");
}
} else {
//输入不合法
alert("您输入的数字不合法");
}
</script>
使用方法二
<script>
//要求用户输入一个三位数
let n = Number(prompt("请输入一个三位数"));
// 对用户输入的数值,进行合法性的验证
if (!isNaN(n) && n >= 100 && n <= 999) {
//当用户输入的数字是合法
//字符串方法
//把数字n变为字符串
let nStr = n.toString();
// 百位
let a = Number(nStr.charAt(2));
//十位
let b = Number(nStr.charAt(1));
//个位
let c = Number(nStr.charAt(0));
console.log(a , b , c);
//根据水仙花数的条件去进行判断
if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == n) {
alert(n + "是水仙花数");
} else {
alert(n + "不是水仙花数");
}
} else {
//输入不合法
alert("您输入的数字不合法");
}
</script>
游乐园门票计算
某游乐园的门票价格如下表所示。请用户输入年龄和星期几,弹出对话框显示门票价格。星期几用阿拉伯数字0、1、2、3、4、5、6表示,其中0表示周日。
if语句嵌套
<script>
//让用户输入星期几
let week = Number(prompt("请输入今天星期几"));
//让用户输入年龄
let age = Number(prompt("请输入您的年龄"));
//让星期几作为大前提条件
if (week == 0 || week == 6) {
//周末
if (age >= 10) {
alert("票价是" + 500);
} else {
alert("票价是" + 210);
}
} else if (week >= 0 && week <= 6) {
//平日
if (age >= 10) {
alert("票价是" + 300);
} else {
alert("票价是" + 140);
}
} else {
alert("不合法星期");
}
</script>
<script>
//让用户输入年龄
let age = Number(prompt("请输入您的年龄"));
//让用户输入星期几
let week = Number(prompt("请输入今天星期几"));
// 让年龄成为大前提
if(age >= 10){
if(week == 0 || week == 6){
alert("票价是" + 500);
}else{
alert("票价是" + 300);
}
}else if(age >= 0){
if(week == 0 || week ==6){
alert("票价是" + 210);
}else{
alert("票价是" + 140);
}
}else{
alert("年龄不合法")
}
</script>
switch
除if语句之外,JS还提供了另外─种选择语句: switc语句。
switch语句的用途:当一个变量被分类讨论的情形。
语法:
switch( 表达式 ) {
case n:
代码块
break;
case m:
代码块
break;
default:
默认代码块
}
要求用户输入一个1~12中的任意一个数字,显示这个月份的天数。
<script>
let month = Number(prompt("请输入月份"));
if(month ==1 || month == 3 || month == 5 || month == 7 ||month == 8 || month == 10 || month == 12){
alert('这个月有31天');
}else if(month == 4 || month == 6 || month == 9 || month == 11){
alert('这个月有30天');
}else if(month == 2){
//闰年2月有29天
alert('这个月有28天或29天');
}else {
alert('请输入正确的月份');
}
</script>
使用switch语句
<script>
let month = Number(prompt("请输入月份"));
//在switch()的圆括号中一般是一个变量名,这个变量将被分类讨论。
switch(month){
//case表示“情况”,它后面没有圆括号,直接跟一个值。程序会依次将case后面的值与switch因括号中的值进 行全等比对,如果比对相同,则执行这条case冒号后面的语句。
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
//多条case可以共用同一个语句体。
alert("这个月有31天");
break;
case 4:
case 6:
case 9:
case 11:
alert("这个月有30天");
break;
case 2:
alert("这个月有28天或者29天");
break;
default:
//default表示默认情况。
//当所有的case值都不匹配的时候, 那么就执行default选项里面的语句
alert("请输入正确的月份")
}
</script>
判断是否是闰年
<script>
//让用户输入一个年份
let year = Number(prompt("请输入一个年份"))
//让用户输入一个月份
let month = Number(prompt("请输入月份"));
//分类讨论
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
alert("这个月有31天");
break;
case 4:
case 6:
case 9:
case 11:
alert("这个月有30天");
break;
case 2:
//根据用户输入的year判断当年是不是闰年
if(year % 4 == 0 && year % 100 != 0 || year % 100 == 0 && year % 400 == 0){
alert("这个月有29天");
}else{
alert("这个月有28天");
}
break;
default:
alert("请输入正确的月份!");
}
</script>
break语句
switch语句并不像if语句那样当执行了某一个分支之后会自动跳出if语句体,程序员必须
主动调用break
来跳出switch语句体。如果不书写break,则后面的所有case都将被视为匹配,直到遇见break。
<script>
let a = 1;
switch(a){
case 1:
console.log("A");
case 2:
console.log("B");
case 3:
console.log("C");
break;
default:
console.log("D");
}
//输出A B C
</script>
<script>
let a = "小甘";
if (a == "小甘") {
alert( a+"好优秀啊");
} else if ( a == "小于") {
alert( a+"是我朋友");
} else if (a == "宝贝") {
alert(a+"太可爱了");
} else if (a == "小hi") {
alert(a+"够哥们");
} else {
alert("who are you");
}
//switch 语句就是为了让开发人员免于编写这样的代码:
</script>
<script>
switch (a) {
case "小甘":
alert(a + "太优秀了");
break;
case "小于":
alert(a + "是我朋友");
break;
case "宝贝":
alert(a + "太可爱了");
break;
case "小hi":
alert(a + "够哥们");
break;
default:
alert("who are you");
}
</script>
案例:判断当前是星期几
语法:
new Date().getDay()
功能:获取新返回值: number (0-6)
<script>
let week = new Date().getDay();
switch (week) { //0-6
case 0:
document.write("今天是星期日");
break; //退出
case 1:
document.write("今天是星期一");
break;
case 2:
document.write("今天是星期二");
break;
case 3:
document.write("今天是星期三");
break;
case 4:
document.write("今天是星期四");
break;
case 5:
document.write("今天是星期五");
break;
case 6:
document.write("今天是星期六");
break;
}
</script>
三元运算符
JavaScript中提供了一种叫做“三元运算”的语法形式,让我们可以方便地实现选择
条件
表达式?
表达式1:
表达式2问号前面是判断的条件,问号后面用冒号隔开两个表达式。
当条件表达式为
真
时调用表达式1,为假
时调用表达式2。
三元运算符的用途:
如果操作语句比较简单,建议用三目运算替代 if…else…
根据某个条件是否成立,在两个不同值中选择变量的值
<script>
let age = Number(prompt("请输入年龄"));
// 三元运算
let type = age >= 18 ? "成年人" : "未成年"
alert(type)
//如果使用if语句
let type;
if(age >= 18){
type = "成年人";
}else{
type = "未成年人";
}
alert(type)
</script>
<script>
let a = 10;
let b = 20;
if( a > b ){
alert( "a大于b" )
}else{
alert( "b大于a" )
}
//使用三元运算符
let a = 10;
let b = 20;
alert( a > b ? "a大于b":"b大于a" );
</script>
简单的if语句
<script>
if (2 < 3){
console.log(1);
}
//使用三元运算符
2<3 ? console.log(1) : ""; //后面写一个无关乎结果的值
//更好的方式是使用逻辑运算符
2<3 && console.log(1); //条件为真执行后面的代码
</script>
当if语句里面有多条执行语句的时候
<script>
let a = 10;
let b = 20;
if (a > b) {
console.log(1);
console.log(2);
} else {
console.log(3);
console.log(4);
}
//使用三元运算符
a > b ?(
console.log(1),
console.log(2)
) : (
console.log(3),
console.log(4)
)
// 使用()将代码块括起来 任何时候不建议这样写 可读性差
</script>
总结
条件分支的语句一共有3种,
if……else if…… (必须立即想到!这个东西无敌)
switch case (某一方面很擅长,体现在了代码的清晰度上)
三元运算符 (赋值的时候,根据条件有两个可能的值,马上想到三元运算符)
&&短路写法
//使用三元运算符
2<3 ? console.log(1) : ""; //后面写一个无关乎结果的值
//更好的方式是使用逻辑运算符
2<3 && console.log(1); //条件为真执行后面的代码
```
当if语句里面有多条执行语句的时候
<script>
let a = 10;
let b = 20;
if (a > b) {
console.log(1);
console.log(2);
} else {
console.log(3);
console.log(4);
}
//使用三元运算符
a > b ?(
console.log(1),
console.log(2)
) : (
console.log(3),
console.log(4)
)
// 使用()将代码块括起来 任何时候不建议这样写 可读性差
</script>
总结
条件分支的语句一共有3种,
if……else if…… (必须立即想到!这个东西无敌)
switch case (某一方面很擅长,体现在了代码的清晰度上)
三元运算符 (赋值的时候,根据条件有两个可能的值,马上想到三元运算符)
&&短路写法