zoukankan      html  css  js  c++  java
  • JavaScript中的十种操作符

    • ①   一元操作符(参与的只有一个变量)
      • 前置递增递减(语句解析到递增/递减时值就被改变了)
      • 后置递增递减(整个语句执行后值再改变)
        • 递增递减也可用于字符串,布尔值,对象等,结果都将是数值;
     
    var num1= 10;
    var num2= 11;
    var num3= -- num1+num2; //20   语句执行前已经递减
    var num4= num1+num2; //20     递减后
    var num5= num1-- +num2; //20  语句执行后再递减
    var num6= num1+num2; //19     上一句语句执行后已递减
     
      • 一元加减操作
        • 一元加减操作符应用于其他类型数据时,该操作符会像Number()一样先将其转换为数值再执行加减
    • ②  加性操作符    
      • 加性和减性操作符主要是转换过程比较复杂,分很多情况;
        • 加性操作符中:
          • 如果两个操作数都是数值,则按照正常的数值计算(跟NaN有关的结果依然是NaN ,正负Infinity相加结果也是NaN)
          • 如果操作数中都是布尔或数值是转换成数值再进行计算
          • 如果两个操作符中有一个是字符串,则转换成字符串再进行连接;
          • 对象会调用toString()得到字符串;再进行连接
    var num01= 5;
    var num02= 5;
    var str= '10';
    console.
    log (num01+ num02+str);//1010 运算优先级,加性操作原则
     
        • 减性操作符中:
          • 跟加性差不多,只不过当操作数不都是数值时,会调用Number()函数将其转换为数值,而对象优先调用valueOf()得到数值,不行再toString();
    • ③  布尔操作符
      • !    非:该操作符会首先将值转换为布尔类型,再求反。因此常用的转布尔值就是用两个!!;
      • &&  与
        • 短路操作,已有结果就不会再执行后面的了
        • 只有两个操作数同时为true时结果才为true;只要有false结果就为false
        • 若第一个操作数是对象,则返回第二个操作数;
        • 若第二个操作数是对象,只有当第一个操作数求值结果为true时才会返回该对象;
        • 若有一个操作数为null,undefined,NaN,则返回null,undefined,NaN;
      •  ||    或
        • 短路操作,已有结果就不会再执行后面的了
        • 只要有一个true结果就为true;
        • 如果两个操作数都是对象,则返回第一个(第一个操作数求值为true则返回第一个)
        • 如果第一个操作数求值为false,则返回第二个;
        • 若有一个操作数为null,undefined,NaN,则返回null,undefined,NaN;
        • var obj=preferObj ||  backUpObj,当preferObj不为null时,将被赋值给obj,为空则赋backUpObj
    • ④  相等操作符
      • 相等操作符会转换操作数类型然后在进行比较,而全等不会,全等保持操作数原来的数类型;复杂对象比较的是引用地址;
      • NaN与任何数不等,null==undefined 返回true;
      • 布尔值会被转换成数值再进行判断;
      • 如果是一个字符串和数值进行比较,字符串会被转换成数值;
      • 如果有一个对象,那么这个对象会调用valueOf()转换成基本类型再进行比较;
    • ⑤  关系操作符
      • <、 <=、 >、 >=均返回布尔值;
      • 两个字符串是比较字符编码值(大写字母编码值小于小写字母),
      • 对象是先调用valueOf()或者toString()得到基本类型再进行比较,
      • 其他的都会被转换成数值再执行比较;数值优先,任何数跟NaN比较,结果都是false;
    • ⑥  条件操作符
      • var variable=boolean_expression ? num1 : num2;  true则返回前面的num1,false则返回后面的true;
    • ⑦  乘性操作符
      • * , / ,%三种运算,其中模运算是取余数;
      • 首先转换成数值在进行操作, 如果一个操作数是 NaN那么结果也为NaN,0/0也是NaN
    • ⑧  位操作符
      • 位操作符用于最基本层次的计算,二进制;32位左边第一位是符号位,用于表示正负的;
      • 操作数会转换为数字再进行操作,转换的数字会自动舍去小数部分;NaN和Infinity会被当做0 来操作;
      • 按位非 ~:
    //按位非:求其反码;结果刚好是其负值减一
    var num01= 25;        //00000000000000000000000000011001
    var num02=~ num01;     //11111111111111111111111111100110
    console. log(num02);  //-26
     
        • 作为了解吧:按位与 & :操作数的二进制中,32的每一位上对应如果都是1则返回1,其他返回0,这样返回的一个32位二进制结果;按位或 | : 则是都是0则返回0,其他返回0;按位异或 ^ :相同则返回0,不同则1;
        • 左移 <<                    二进制32位中,向左移动,移动后右边空出的以0填充;左移不影响正负符号;
        • 有符号右移   >>        向右移动,移动数值左边、符号位右边空出的以符号位的数字来填充;
        • 无符号右移   >>>      正数有无符号结果相同;对负数来说,其表示方法是用的补码,这样左边空出来的依然用0填充后就会非常大
      • ⑨  逗号操作符
        • 声明多个变量之间用逗号连接
      • ⑨  赋值操作符
  • 相关阅读:
    关于JVM的一些东西
    网络的最大流最小割定理
    类的生命周期
    关于java中的不可变类(转)
    如何在Linux上升级java
    CAS操作
    如何使用fastJson来解析JSON格式数据和生成JSON格式数据
    计算机中如何实现除数是2的幂次的除法【转载自CSDN】
    python:使用Fabric自动化你的任务
    python中的元类
  • 原文地址:https://www.cnblogs.com/lazychen/p/5409382.html
Copyright © 2011-2022 走看看