• JavaScript运算符


    一、JavaScript 算数运算符

     用于数值运算

    算数运算符 描述
    + 加法
    - 减法
    * 乘法
    / 除法
    % 求余/取模
    ++ 自增(前++:先赋值,后运算;后++:先运算,后赋值)
    -- 自减

    1.1 "+" 除了算数运算符中的加法,也是连接符

    <script>
        var x = 1 + 2 + "3";
        console.log('1 + 2 + "3" = ' + x); //33
    
        x = "1" + 2 + 3;
        console.log('"1" + 2 + 3 = ' + x); //123
    
        x = "1" + (2 + 3);
        console.log('"1" + (2 + 3) = ' + x); //15
    
        // 除+外,其他运算符中的String类型会先转换为Number类型,然后才计算
        x = "4" - 14;
        console.log('"4" - 14 = ' + x); //-10
    </script>
    

    1.2 自增、自减

    x++、++x是表达式,跟变量x不同

    <script>
        //n++:是原值
        //++n:是新值  
      
        var n1 = 10, n2 = 20;
        // n1++  ++n1 是表达式
        var n = n1++;   //n1=11  n=10
        console.log('n = ' + n);
        console.log('n1 = ' + n1);
    
        var n = ++n1;   //n1=12  n=12
        console.log('n = ' + n);
        console.log('n1 = ' + n1);
    
        var n = n2--;   //n2=19  n=20
        console.log('n = ' + n);
        console.log('n2 = ' + n2);
    
        var n = --n2;   //n2=18  n=18
        console.log('n = ' + n);
        console.log('n2 = ' + n2);
    </script>
    

    二、JavaScript 赋值运算符

    向 JavaScript 变量赋值

    赋值运算符 例子 等同于
    = x=2 x=2
    += x+=2 x=x+2
    -= x-=2 x=x-2
    *= x*=2 x=x*2
    /= x/=2 x=x/2
    %= x%=2 x=x%2

    三、JavaScript 关系运算符

    关系运算符 描述
    == 等于
    === 等值等型
    != 不相等
    !== 不等值或不等型
    > 大于
    < 小于
    >= 大于或等于
    <= 小于或等于
    ? 三元运算符

    3.1 == 和 === 的区别

    var x = 'hellow'; //String
    var y = new String('hellow'); //Object
    console.log(x == y);      //true,由于值相等
    console.log(x === y);     //false,由于数据类型不同
    
    var z = new String('hellow'); //创建了一个Hellow的String对象     
    console.log(z == y);      //false,因为y、z在栈内存中分别创建对象,是不同的对象,故为false
    

    3.2 isNaN()

    var a = NaN;
    //NaN 与 NaN 的值不一定相等,所以一般为false
    console.log( a == NaN ); //false
    
    //一般判断一个值是否为NaN,使用isNaN()
    console.log( isNaN(a) ); //true
    

    3.3 字符串中关系运算符的比较

    //任何值和NaN比较:false
    console.log(NaN >= "1");  //false
    
    /*
      比较两个字符串时,比较的是字符串的字符编码
      比较字符编码时是一位一位进行比较
      如果两位一样,则比较下一位
    */
    //注意:在比较两个字符串型的数字时,一定要转型
    console.log("11" < "5"); //true
    console.log("abc" < "bcd"); //true
    
    //比较中文时没有意义
    console.log("戒" > "我"); //true
    

    四、JavaScript 逻辑运算符

    逻辑运算符 描述
    !
    &&
    ||
    <script>
        /*
          ! 非
            - 若变量值为Boolean值
        */
        var x = false;
        console.log('!x = ' + !x); //true;
    
        console.log('!!x = ' + !!x); //false
    
        /*
          ! 非
            - 变量值:非Boolean值
                会先将其转为Boolean再进行判断
        */
        var y = "-2";
        console.log('!y = ' + !y); //false
        console.log('!!y = ' + !!y); //true;
    
        /*
          &&:两个为true才为true;有一个为false则为false
              - 对于非布尔值的情况
                  会先将其转为Boolean,然后再运算,并且返回原值
              - &&与运算:
                  - 如果第一值为true,则必然返回第二个值
                  - 如果第一值为false,则直接返回第一个值   
          ||:有一个为true即为true
              - 非布尔值
                - 若第一个值为true,则直接返回第一个值   
                - 若第一个值为false,则返回第二个值  
        */  
       var a = "0" && NaN;
       console.log('"0" && NaN = ' + a); //NaN   
    
       var b = undefined && "0";
       console.log('undefined && "0" = ' + b); //undefined 
    
       var c = "0" || NaN;
       console.log('"0" || NaN = ' + c); //0   
    
       var d = undefined || NaN;
       console.log('undefined || NaN = ' + d); //NaN 
    </script>
    

    五、JavaScript 类型运算符

    类型运算符 描述
    typeof 返回变量的类型
    instanceof 返回 true,如果对象是对象类型的实例

    5.1 typeof

    var a = new String();
    console.log(typeof a);
    

    5.2 instanceof

    5.2.1 instanceof 比较内置类型

    /*
      instanceof 左操作数是一个类,右操作数是标识对象的类  
      语法:
           对象                 函数
          object instanceof constructor  
    */
    //比较自定义对象
    function Foo() {}
    function Bar() {}
    Bar.prototype = new Foo();
    
    new Bar() instanceof Bar; // true
    new Bar() instanceof Foo; // true
    
    // 如果仅仅设置 Bar.prototype 为函数 Foo 本身,而不是 Foo 构造函数的一个实例
    Bar.prototype = Foo;
    new Bar() instanceof Foo; // false
    

    5.2.2 instanceof 比较内置类型

    new String('foo') instanceof String; // true
    new String('foo') instanceof Object; // true
    
    'foo' instanceof String; // false
    'foo' instanceof Object; // false
    

    注:instanceof 操作符应该仅仅用来比较来自同一个 JavaScript 上下文的自定义对象。

    六、JavaScript 位运算符

    位运算符处理 32 位数
    该运算中的任何数值运算数都会被转换为 32 位的数。结果会被转换回 JavaScript 数。

    位运算符 描述 例子 等同于 结果 十进制
    & 与(如果两位都是 1 ,则设置每位为 1) 5&1 0101 & 0001 0001 1
    | 或(如果两位之一为 1 ,则设置每位为 1) 5|1 0101 | 0001 0101 5
    ~ 非(反转所有位) ~5 ~0101 1010 10
    ^ 异或(同位取0,异位为1) 5^1 0101 ^ 0001 0100 4
    << 零填充左位移(通过从右推入零向左位移,并使最左边的位脱落) 5<<1 0101 << 1 1010 10
    >> 有符号右位移(通过从左推入最左位的拷贝来向右位移,并使最右边的位脱落) 5>>1 0101 >> 1 0010 2
    >>> 零填充右位移(通过从左推入零来向右位移,并使最右边的位脱落) 5>>>1 0101 >>> 1 0010 2
  • 相关阅读:
    java 获取最近三个月的月初和月末日期
    java 字符串与十六进制互转
    @Validated 参数校验及配置
    mybatis 存取Oracle数据库中Blob类型数据
    Java下载服务器文件到前端
    Java实现Oracle拷贝数据插入到MySQL
    保利、绿地用移动质检3.0管进度、质量,让快周转又快又好!
    未造先知,匠心协同-BIM全过程总咨询实践案例赏析-2021版
    大数据资产管理总体框架概述
    “数据资产全生命周期管理”你要知道的九大问题
  • 原文地址:https://www.cnblogs.com/nadou/p/14030673.html
Copyright © 2020-2023  润新知