日期:2月1日夜
1.&& || !
与 a && b
a和b 都为true 结果也为true
a和b 任意一个为false 结果也为false
或 a || b
a 和b 只要有一个为true 结果也为true
a 和b 两个都为false 结果也为false
非 !a true --> false (也是取反)
false ---> true
&& ||
1。原则上 左右两侧都是boolean值或者是boolean表达式【该表达式计算的结果是boolean值】 结果也返回boolean值
2、如果前面的表达式能够判断出整个表达式的结果 那么后面的表达式则不再执行
3、如果左右两侧是非boolean 值 左右两侧会隐式转换成boolean值 取值 取最终能判断出整个表达式结果的那个数值
综上所述:
result = a && b / a||b, 如果a 能够判断出整个表达式的值 那么 result=a 否则 result - b
console.log(true && true); // true
console.log(true && false); // false
console.log(false || true); // true
console.log(false || false); // false
console.log( 2 > 1 || 1 < 0); // true
2.三元运算符
三元运算符
结果 = 表达式A【隐式转换】? 结果A : 结果B
当表达式A 为 true 结果 = 结果A 否则 结果 = 结果B
var r1 = Number(prompt("请输入一个数值a:"))
var r2 = Number(prompt("请输入一个数值b:"))
var result = r1 > r2 ? r1+"大于"+r2 : r1+"不大于"+r2
3.IF语句
条件的总结:1. if语句 处理 单一条件的 ,2. if...else 语句 处理 两个条件的 3.多重if语句 处理 n个条件的
1.if单层
if(表达式A) {
结果A
}
语法规则
1.如果表达式A 为true 那么就会执行结果A 如果为true 则不执行结果A
2.表达式A 也可以隐式转换成boolean类型
var score = Number(prompt("请输入小明的成绩:"))
if(score >= 60){
console.log("去游乐场玩.....");
}
2.if else语句
if(条件A) {
结果A
}else {
结果B
}
如果条件A 为true 则执行结果A 否则执行结果B, if...else... 条件语句 很多时候可以和三元运算符相互替换
var score = Number(prompt("请输入分数。。。。"))
if(score >= 60) {
console.log("去游乐场玩....");
}else {
console.log("在家写暑假作业.....");
}
3.多重if语句
语法、
if(条件A) {
结果A
}else if(条件B) {
结果B
}....
else if(条件N) {
结果N
}else {
其他
}
满足某个条件 就执行对应的结果 执行完毕之后会跳出当前整个的流程控制语句
特点: 多重if语句 结果 最多只能执行一个
if 语句和多重if语句的特点:
所有的多重if语句 都能被 单条if语句替换【只要把条件写精细就可以了】
但是,多重if语句 条件匹配成功之后 就不会再继续向下匹配了 所以 如果存在多条件的判断 多重if语句效率 远远高于 if语句的效率
var score = Number(prompt("请输入分数:"));
if(score >= 90) {
console.log("优秀");
}else if(score >= 80 ) {
console.log("良好");
}else if(score >= 70 ) {
console.log("中等");
}else if(score >= 60 ) {
console.log("及格");
}else {
console.log("不及格");
}
案例:if
需求:小明考试
及格: 60 70 80 90 100 去动物园 否则,去植物园
不及格 就要挨揍
var score = Number(prompt("请输入成绩:"))
if (score >= 60) {
// 不能被10整除的
if (score % 10) {
console.log("去植物园");
} else {
// 能被10 整除的
console.log("去动物园");
}
} else {
console.log("挨揍");
}
// 以上代码 可以改成三元运算
var result = score >= 60 ? (score % 10 ? "去植物园" : "去动物园") : "挨揍";
console.log(result);
4.switch语句
1. switch条件
特点: 1 所有的switch 语句都可以被 if语句代替,2 switch 的应用场景 通常用于等值匹 配上
语法:
switch(变量条件) {
case 常量条件A :
结果A
break;
case 常量条件B :
结果B
break;
....
case 常量条件N :
结果N
break;
default:
其它
}
特点: 变量条件 和 常量条件的匹配 是 === 的等值匹配
注意事项:
1、 switch 的书写规范 一定要按照上述语法去写
2、 不推荐的写法 但是语法 不报错
变量条件 可以不是变量 可以使用常量
变量条件 可以是一个表达式
常量条件 也可以是变量
常量条件 也可以是表达式
/*输入内容
1 打印 星期1
2 打印 星期2
...
7 打印 星期天
其他 打印 输入有误 */
var week = Number(prompt("请输入星期:")) // 1
var a = 1;
switch (week) {
case 2-a:
console.log("星期一");
break;
case 2:
console.log("星期二");
break;
case 3:
console.log("星期三");
break;
case 4:
console.log("星期四");
break;
case 5:
console.log("星期五");
break;
case 6:
console.log("星期六");
break;
case 7:
console.log("星期天");
break;
default:
console.log("输入错误。。。");
}
2.switch的穿透性
switch 关键字 定义是switch 流程语句
case 常量 用于匹配变量的数值
default 默认 如果没有匹配 则进入 default中执行
break 表示 结束整个流程控制
如果不写break 程序讲不用判断后面的case 直接到后面的case中执行 直到遇到break为止 才会推出整个switch
关于switch 穿透性 应用
有相同业务逻辑的 可以放在一起 利用 穿透性 一次执行
var week = Number(prompt("请输入日期"));
switch (week) {
case 1:
case 2:
case 3:
case 4:
case 5:
console.log("工作日");
break;
case 6:
case 7:
console.log("休息日");
break;
default:
console.log("输入错误。。。。");
break;
}