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天
posted @ 2022-07-26 20:49  一歧日和  阅读(90)  评论(0)    收藏  举报