运算符及控制语句

一元运算符

        只能操作一个值的运算符 ++ -- (自动转为数值)
        ()前后不能直接写++
        console.log(++(a--)); //() 不能和++ 一起使用

关系运算符

        用于进行比较的运算符称作为关系运算符. 关系运算符有:  小于(<)、大于(>)、小于等于(<=)、
        大于等于(>=)、相等(==)、不等(!=)、全等(恒等)(===)、不全等(不恒等)(!==)

  • 字符串和数值进行比较(字符串会自动转为数值)
          console.log(1>2);//false
          console.log('123'> 213);//false 自动转为number
          console.log('123a' > 213);//false 自动转为number,不能转就会出现NAN,就是false

  •  出现NaN 一般都是false
          console.log(NaN==NaN);//false

  •  undefined是null的派生所以对应的值是相等的
          console.log(undefined==null);//true
          console.log(undefined===null);//false

  •  字符串和字符串进行比较 (ASCII码 A65 a97 自动进行ASCII码比较 比较第一位)
          console.log('a' > 'b');//false
          console.log('a' < 'b');//true
          console.log('bAA' < 'aZZ');//false 比较第一个字母

  •  布尔类型的值和null进行比较    自动转数值(出现NAN就是false)
          console.log(true > null);//true
          // console.log(true++);报错不被允许
          console.log(true);//true
          console.log(true > undefined);//false

  •  == 和 === 的区别(恒等,这俩个内容是一个内容)
          ==比较值是否一致
          === 除了判断值还要判断数据类型 (证明这俩个内容是否是一个内容)
          //值属于常量 不能变的(地址唯一的)
          console.log("123"==123);//true
          console.log("123"===123);//false
          会先转换再进行比较
          console.log(Number(true)==1);//true
          console.log(Number(true)===1);//true
          console.log(Boolean(0)===false);//true

  • undefined和0进行比较
          console.log(undefined==0);//false NaN

  • null和0进行比较 null是空对象引用 对应的是一个引用类型 引用类型比较的是地址
          console.log(null == 0);//false

逻辑运算符

        逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符:
        && 短路与 &断路与 || 短路或 |断路或 ! 取反

  • && 短路与 所有的同时满足才为真 && 只要前面有一个是假后面的就不会看了 & 看完全部
          var a = 10,b = 20,c = 30;
          console.log(a > b && b < c); //false
          console.log(c > b && b < c); //true

  • || 短路或 有一个是true就是true,前面只要出现了true,就不看后面的。 | 看完全部
          console.log(c > b || a > b); //true
       
  • ! 取反
          console.log(!c > b || a > b); //false
          console.log(!(c > b || a > b)); //false

        || 常用

  • 有一个true 取true
          console.log(a > b || 20); //20
          var i = 0 || 10
          console.log(i);

  • 如果俩个都是false 取最后一个
          var str = undefined || ''
          console.log(str); //''

  • 如果俩个都是true 取第一个为true的
          var str1 = 'a' || 'b'
          console.log(str1); //a
          var str2 = '' || "false" || 'true'
          console.log(str2); //false

        &&

  • 如果出现false 直接取false 如果全是true 取最后一个
          var str4 = 10 && 20
          var str5 = undefined && ''
          var str6 = !123
          console.log(str4);//20
          console.log(str5);//undefined
          console.log(str6);//false

三目运算  

        三目运算和对应的逻辑运算优先级一样
        var str3 = (10 > 20 ? '' : '123') || (30 > 20 ? '' : '456')
        console.log(str3); //123

表达式的概念:

        由运算符和操作数(变量或常量)组成的式子

          算术运算符组成的式子叫算术表达式,  如:2+3;
          关系运算符组成的式子叫关系表达式或者条件表达式, 如:a>5;
          逻辑运算符组成的式子叫做逻辑表达式, 如:a&&b

运算符优先级(从上到下执行)

程序控制语句(所有的程序都有的 所有的语言都有)

        控制程序的执行(利用条件控制 利用循环来控制)

        程序的三大流程控制:

          顺序:从上朝下执行的代码就是顺序
          分支(选择):根据不同的情况,执行对应代码
          循环:重复做一件事情
 

        条件控制语句(只会进入其中一个条件)

  • if 是可以使用区间值 也可以使用固定值
  • switch必须要有规定的值的时候才有 他不会使用到有区间的内容(比对是恒等比对)
  • if效率和switch效率 从一行代码区分对应的来说 if效率会高点 多行代码区分 switch效率会高(用空间换时间)

        逻辑分支IF

        if 如果(第一个条件) else if 如果(第二个条件 无限加) else 否则(只有一个)

        if(表达式(boolean类型的值 自动转成boolean类型)){
            执行语句1
        }
        else if(表达式2){
            执行语句2
        }
        else if(表达式3){
            执行语句3
        }
        else{  //上面都不满足的情况
            执行语句n
        }
 
        示例
        var a=10,b=20
        //从上到下的顺序进行的 上面只有一个进入的下面的内容就不会执行了
        if(a>b){
            console.log('我是a的值为'+a)
        }else if(a==b){
            console.log('我是b的值为'+b)
        }else if(a<b){
            console.log('a的值小于b的值')
        }else{
            console.log('上面的都不满足')
        }

        iF的嵌套
        将整个if语句块插入另一个if语句块中
        if (表达式1) {
                if (表达式2)  {
                    if (表达式3){
                        语句;
                    } else{
                        语句;
                    }
                } else{
                    语句;
                }
        }
 
        示例
        // 保证良好的缩进 保证可读性
        // 求y的值
        var x = prompt()
        var y
        //可能不是数值
        //提取条件优秀级 先找出问题的条件 再找大的条件 再找小的条件
        if(Number(x) || x == 0){
                if(x<0){
                    y = -1
                }else if(x==0){
                    y = 0
                }else{
                    y = 1
                }
                console.log(y);
        }else{
            console.log('您的输入有误');
        }

        逻辑分支Switch

        switch 表达式的结果等于哪个case的常量,则执行其后的语句,执行完break就跳出switch结构
 
        switch(表达式) {
            case 常量1:
                语句;
                break;
            case 常量2:
                语句;
                break;
            …
            case 常量n:
                语句;
                break;
            default:    //都不满足
                语句;
                break;
        }
 
        示例
        //输入等级grade,输出对应百分制成绩范围
        var grade = prompt()
        switch (grade) {
            case 'A':
                console.log('80-100');
                break;
            case 'B':
                console.log('70-79');
                break;
            case 'C':
                console.log('60-69');
                break;
                case 'D':
                console.log('<60');
                break;
            default:
                console.log('error');
        }
        //break 跳出 跳出整个代码块 switch代码以及循环代码块 如果没有break 从头走到底 会从满足条件的第一个走到default里面
posted @ 2022-07-26 20:24  一对7  阅读(52)  评论(2编辑  收藏  举报