三木运算符
三元表达式
语法结构:表达式1?代码1:代码2;
语法解析
- 表达式1成立,就执行代码1,否则就执行代码2。
- 如果代码1或者代码2有结果,那么这三个元表达式的结果就是代码1或代码2。
表达式1可以是那些表达式:
- 关系表达式
- 布尔类型的值
一般表达式都会有一个结果 要不就直接输出,要不就是用一个变量保存
分支结构
if
语法结构:
if(表达式){
条件成立时执行的代码
}
表达式可以是哪些:
- 关系表达式
- 布尔类型的值
- 其他类型的值
if结构里面的{ } 在条件成立时需要执行的代码只有一行是可以省略,但是一般不要省略
if else
语法结构:
if(表达式){
代码1; //条件成立时执行的代码
} else{
代码2; //条件不成立时执行的代码
}
语法解析:
- 当表达式成立时,执行代码1,否则执行代码2
- if - else 是表示两个互斥的结构,只能满足其中一个,两个大括号里面的代码不可能同时执行
- else后面绝对不能接括号
if else-if else
语法结构:
if(条件1){
条件1成立时执行的代码
} else if(条件2){
条件2成立时执行的代码
}
......
else{
以上条件有不成立时执行的代码
}
特点
- if-else if是做多条件判断的
- 所有大括号里面的代码只会执行一个
swich case
swich case:主要用于固定值匹配
swich case:匹配规则:匹配值必须是全等的
break的作用:是用来结束swich-case语句的 ,可以不写,但是不写会出现穿透现象 防止传统
break:只能用于swich语句和循环语句
经典例题
- 请用户输入年份和月份, 打印出这个月有多少天
1, 3, 5, 7, 8, 10, 12 月有31天
4, 6, 9, 11 有30天
2 月, 如果是平年就是28天, 闰年就是29天
var year = +prompt("请输入年份");
var month = +prompt("请输入月份");
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
document.write("这个月有31天");
break;
case 4:
case 6:
case 9:
case 11:
document.write("这个月有30天");
break;
case 2:
if((year % 4 == 0 && year % 100 != 0) || (year % 400 ==0)){
document.write("这个月有29天")
} else{
document.write("这个月有28天")
}
}
- 猜数字游戏
程序随机生成或任意存储一个0-9范围内的整数;(随机数:(Math.random() * 10) | 0)
用户输入一个整数,若比生成的随机数大则在控制台中输出“猜大了”,若比生成的随机数小则在控制台中输出“猜小了”,直到用户才对数字为止
输入范围外的字符,提示“输入有误”
`[ 提升要求:输入 “exit”…退出游戏]
var num = Math.floor((Math.random() * 10) | 0);
var num1;
var a = "exit";
num1 === a;
while (true) {
num1 = prompt("请输入一个整数");
if ((num1 > num) && (num1 >= 0 && num1 <= 9)) {
alert("猜大了");
} else if ((num1 < num) && (num1 >= 0 && num1 <= 9)) {
alert("猜小了")
} else if ((num1 == num) && (num1 >= 0 && num1 <= 9)) {
alert("你猜对了")
} else if (num1 < 0 || num1 > 9) {
alert("输入有误");
} else if (num1 === a) {
alert("...退出游戏");
break;
}
}
知识点补充
逻辑表达式的结果不只是truer或者false
什么叫短路运算:在逻辑表达式中,如果第一个式子就可以决定整个逻辑表达式的结果,那么第二个式子就 不用再计算了,这个就是逻辑运算符的短路运算
- 逻辑与的短路运算:找假 再逻辑表达式中,如果第一个式子的结果为false,那么该逻辑表达式的结果就是第一个式子的值,否则就是第二个式子的值
- 逻辑或的短路运算:找真 在逻辑表达式中,如果第一个式子的结果为true,那么该逻辑表达式的结果就是第一个式子的值,否则就是第二个式子的值