• Javascript高级之操作符


    操作符

    一元操作符

    • 概念
      • 只操作一个值的操作符叫一元操作符
      • 一元运算会直接修改原始变量的数据

    递增/递减操作符

    • 前缀操作运算

      • 前缀++ 先加1,后参与运算
      • 前缀-- 先减1,后参与运算
      • 无论使用前缀递增还是前缀递减操作符,变量的值都会在语句被求值之前改变
      • 在计算机科学中,这通常被称为具有副作用
    • 后缀操作运算

      • 后缀++ 先参与运算,后加1
      • 后缀-- 先参与运算,后减1

    一元加和减

    • 一元加
      • 对数值没有任何影响
      • 一元加应用到非数值,则会执行与使用Number()转型函数一样的类型转换
    let s1= '01',
        s2= '1.1',
        s3= 'z',
        b= false,
        f= 1.1,
        o= {
          valueOf(){
            return -1;
          }
        };
    
    console.log(+s1);
    console.log(+s2);
    console.log(+s3);
    console.log(+b);
    console.log(+f);
    console.log(+o);
    
    • 一元减
      • 用于把数值变为负值
      • 一元减应用到非数值,会遵循一元加的规则,再取负值
    let s1= '01',
        s2= '1.1',
        s3= 'z',
        b= false,
        f= 1.1,
        o= {
          valueOf(){
            return -1;
          }
        };
    
    console.log(-s1);
    console.log(-s2);
    console.log(-s3);
    console.log(-b);
    console.log(-f);
    console.log(-o);
    

    布尔操作符

    • 逻辑非

      • 逻辑非操作首先将操作数转换为布尔值,再对其取反
      • 逻辑非操作符可以用于把任何值转换为布尔值
    • 逻辑与

      • 逻辑与操作符可用于任何类型的操作数,不限于布尔值
      • 如果操作数不是布尔值,则逻辑与并不一定会返回布尔值
        • 如果第一个操作数是对象,则返回第二个操作数
        • 如果第二个操作数是对象,则只有第一个操作数求值为true才会返回该对象
        • 如果两个操作数都是对象,则返回第二个操作数
        • 如果有一个操作数是null,则返回null
        • 如果有一个操作数是NaN,则返回NaN
        • 如果有一个操作数是undefined,则返回undefined
    let res= {'name':'Sunny'} && 'Jerry';
    console.log(res);     // Jerry
    
    let res= 'Jerry' && {'name':'Sunny'};
    console.log(res);    // { name: 'Sunny' }
    
    let res= {'name':'Jerry'} && {'name':'Sunny'};
    console.log(res);   // { name: 'Sunny' }
    
    let res= {'name':'Jerry'} && null;
    console.log(res);   // null
    
    let res= {'name':'Jerry'} && NaN;
    console.log(res);   // NaN
    
    let res= {'name':'Jerry'} && undefined;
    console.log(res);   // undefined
    
    • 逻辑或
      • 如果操作数不是布尔值,则逻辑或并不一定会返回布尔值
        • 如果第一个操作数是对象,则返回第一个操作数
        • 如果第一个操作数求值为false,则返回第二个操作数
        • 如果两个操作数都是对象,则返回第一个操作数
        • 如果两个操作数都是null,则返回null
        • 如果两个操作数都是NaN,则返回NaN
        • 如果两个操作数都是undefined,则返回undefined
    let res= {'name':'Sunny'} || 'Jerry';
    console.log(res);     // { name: 'Sunny' }
    
    let res= '' || {'name':'Sunny'};
    console.log(res);    // { name: 'Sunny' }
    
    let res= {'name':'Jerry'} || {'name':'Sunny'};
    console.log(res);   // { name: 'Jerry' }
    
    let res= null || null;
    console.log(res);   // null
    
    let res= NaN || NaN;
    console.log(res);   // NaN
    
    let res= undefined || undefined;
    console.log(res);   // undefined
    

    短路现象

    • 逻辑与

      • 如果第一个操作数决定了结果,那么不会对第二个操作数求值
      • 第一个操作数为false,第二个操作数不作为
    • 逻辑或

      • 如果第一个操作数决定了结果,那么不会对第二个操作数求值
      • 第一个操作数为true,第二个操作数不作为
    • 逻辑或的短路应用

      • let obj= preObj || bacObj
      • 如果首选对象不为空,则返回首选对象,被选对象不作为

    乘性操作符

    • 分类
      • 乘法操作符
      • 除法操作符
      • 取模操作符

    指数操作符

    • 指数操作符的表现形式
      • Math.pow()
      • **
    const num= 4;
    
    console.log(num**2);                // 16
    console.log(Math.pow(num, 2));      // 16
    
    console.log(num**0.5);              // 2
    console.log(Math.pow(num, 0.5));    // 2
    

    加性操作符

    • 分类
      • 加法操作符
      • 减法操作符

    关系操作符

    相等操作符

    • 分类
      • 等于和不等于:只进行值得比较
      • 全等和不全等:类型和值同时相等,则相等

    条件操作符

    let max= (num1>num2)?num1:num2;
    

    赋值操作符

    逗号操作符

    • 概念
      • 逗号操作符可以用来在一条语句中执行多个操作
      • 在赋值时使用逗号操作符分隔值,最终会返回表达式中最后一个值
    let num= (1, 2, 3, 4, 5);
    console.log(num);    // 5
    

    操作符优先级

    • 优先级从高到底
      • 括号 ()
      • 一元运算符 ++ -- !
      • 乘性运算符 * / %
      • 加性运算符 + -
      • 关系运算符 > >= < <=
      • 相等运算符 == != === !==
      • 逻辑运算符 先&& 后||
      • 赋值运算符
  • 相关阅读:
    MySQL-安装mysql8
    MySQL-Prometheus
    MySQL-sysbench
    MySQL-客户端登录问题
    学习进度第十六周
    学习进度第十五周
    寻找最长单词链
    用户体验评价
    学习进度第十四周
    找水王问题
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14157203.html
Copyright © 2020-2023  润新知