02js运算符与逻辑分支
1.js运算符
1.1一元运算符:只能操作一个值的运算符
var x = ++y; // 先运算,后赋值 var x = y++; // 先取值,后运算 //其他类型应用一元运算符的规则 var y = '89'; y++; //90,数值字符自动转换成数值 var y = 'xy'; y++; //NaN,字符串包含非数值转成NaN var y = false; y++; //1,false转成数值0,累加就是1 var y = 2.3; y++; //3.3,直接加1
1.2关系运算符:小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、相等(==)、不等(!=)、全等(恒等)(===)、不全等(不恒等)(!==)
关系运算符的比较规则:
(1)数字和数字比较, 直接比较大小
(2)数字和字符串比较, 字符串转换为数字后再比较(隐式自动转换)
console.log(124 > "123");//输出true
(3)字符串和字符串比较, 进行字符的第一位字符ASCII码值比较(A 65 a 97)
console.log("abb" > "baa");//输出false(如果比较全部字符则"abb" > "baa"成立对应输出true,)
比较注意事项:
(1)布尔值 ture = 1, false = 0
(2)只要不等于NaN, 就是true, 其他有NaN的运算都为false,NaN不和任何值相等包括它自己
(3)如果要恒等, 则必须值和类型都要相等
console.log(NaN == NaN);//输出flase
1.3逻辑运算符
包括&&(短路与)、||(短路或)、!(非)
&&运算符寻找第一个为false的值,后面不执行;寻找最后一个为true的值
||运算符寻找第一个为ture的值,后面不执行;寻找最后一个为false的值/aFaa
!运算符可以用于任何值,先转换为布尔值,再取反
1.4表达式的概念:
由运算符和操作数(变量或常量)组成的式子
算术运算符组成的式子叫算术表达式, 如:2 + 3;
关系运算符组成的式子叫关系表达式或者条件表达式, 如:a > 5;
逻辑运算符组成的式子叫做逻辑表达式, 如:a && b
2.逻辑分支if
计算机执行程序采用结构化程序三种基本结构
顺序:从上朝下执行的代码就是顺序
分支(选择):根据不同的情况,执行对应代码
循环:重复做一件事情
2.1 if 单分支语句
if (表达式) { 执行语句 } //括号中为true时才执行{}内的语句
2.2 if 双分支语句
//if双分支语句的写法: if (表达式) { 执行语句1 } else { 执行语句2 }
2.3 if 多分支语句
//IF多分支语句 //if多分支语句的写法: if (表达式) { //执行语句1 } else if (表达式2) { //执行语句2 } else if (表达式3) { //执行语句3 } else { //执行语句n }
注意! 当把else if 改为 if 时
var x = 15; if (x > 20) { console.log("x大于10"); } if (10 < x && x < 20) { console.log("x在10~20之间"); } if (x < 10) { console.log("x小于10"); } else { console.log("x等于10"); } //输出结果:x在10~20之间 x=等于10; //得出结论:如果else if改为if ,无论if中的条件满不满足最后的else都会执行一遍
2.4 if 的嵌套
//将整个if语句块插入另一个if语句块中,注意代码缩进 if (表达式1) { if (表达式2) { if (表达式3) { 语句; } else { 语句; } } else { 语句; } }
3.逻辑分支Switch
//Switch语句的写法: switch (表达式) { case 常量1: 语句; break; case 常量2: 语句; break; … case 常量n: 语句; break; default: 语句; break; } /* 表达式的结果等于哪个case的常量,则执行其后的语句,执行完break就跳出switch结构,都不满足则执行default的语句。break;语句的作用:跳出switch结构, 若无break;则会穿透,继续执行后继语句。default条件都不满足才执行 */ //switch的应用场景: 表达式为固定值, 不能判断范围
case的穿透效果示例:实现一年中的第几天
var year = 2000; var month = 7; var day = 23; var num = 0; switch (month) { case 11: num += 30 case 10: num += 31 case 9: num += 30 case 8: num += 31 case 7: num += 30 case 6: num += 31 case 5: num += 31 case 4: num += 30 case 3: num += 31 case 2: if (year % 100 !== 0 && year % 4 == 0 || year % 400 == 0) { num += 29 console.log("闰年"); }else{ num += 28 } } console.log("今年是"+year+"年"+month+"月"+day+"日,是今年的第"+num+"天");//输出结果:今年是2000年7月23日,是今年的第182天