zoukankan      html  css  js  c++  java
  • 操作符:一元操作符、布尔值操作符(逻辑操作符)、加性操作符、乘性操作符、关系操作符、相等操作符、条件操作符以及赋值操作符

    操作符:ECMAScript的操作符适用于多种类型的值,包括适用于对象。但是在用于对象时需使用valueOf()或者调用toString()方法,来取得可以操作的值。

       1.一元操作符包括自增和自减以及一元加减操作符

         -自增

            在原变量的基础上+1,对原变量自增后原变量立即增加1。

            写法:a++  或 ++a         两者对于原变量的作用一样,但是值不一样.

                       a++ 的值为自增加前的值,即原值;  ++a 的值为自增后的值,即新值;

    var num1 = 2, num2= 4;
    var num3 = num1++ + num2;  //输出 6 num1是没有增加前的
    var num4 = num1 +num3 ;//输出9 num1已经完成了自增
    

          -自减同上

    var num1 = 8, num2= 4;
    var num3 = num1-- - num2; //输出4 var num4 = num1 -num3 ; //输出 3

          -一元加减操作符      一元即一个字面量

    var  a = "0.1";
    a = +a;//值变成数值0.1
    a = -a;值变成数值-0.1
    

     可利用一元加操作符将字符转变为数值,与Number()的作用相同

     2.布尔值操作符(逻辑操作符)!非  || 或  && 与 

         ! 非 :任何值都会返回一个布尔值。其过程是首先将其操作数转化一个布尔值,然后进行取反

        遵循的规则是:(记忆时对于对象、非空字符串以及任意非0数值会返回true后进行取反。)

          对于对象、非空字符串以及任意非0数值(包括infinity 即正无穷)会返回false

         对于空字符串、数值0、null、NaN以及undefined会返回true

     注意:

               a =!!a;  取两次就是原值,为隐性转换数据类型为Boolean

       ||  或 :由两个操作数组成,如果第一个操作数返回true则结果返回true;如果第一个操作符返回false则结果返回false;

        遵守的规则是:

         对于第一个操作数为对象则返回 第一个操作数

        对于第一个操作数求值为false则返回第二个操作数

       对于两个操作数都是null,则返回null 

       对于两个操作数都是undefined,则返回undefined

       对于两个操作数都为NaN,则返回NaN

    && 与 逻辑与是一个短路操作。只有两端同时为true才返回true(第二个操作数)。当第一个操作数是false时,则返回第一个数不再检查第二个数。

        遵守的规则是:

      对于第一个操作数是对象,则返回第二个操作数

     对于第一个操作说是null,则返回null

     对于第一个操作数是NaN,则返回NaN

     对于第一个操作是undifined,则返回undifined

    3.加性操作符

     加号  +

       如果两个操作数为数值,执行常规的加法计算,根据下列规则返回:

        如果有一个操作数为NaN,则返回NaN

        如果是Infinity加Infinity,则返回Infinity

        如果是Infinity加-Infinity,则返回-Infinity

        如果是-Infinity加-Infinity,则返回NaN

        如果+0 加 +0 .则返回 +0

       如果 +0 加-0 ,则返回+0

       如果-0 加-0 ,则返回-0

       如果两个操作数为字符串,执行拼串操作

       如果两个操作符其中一个是字符串,则将其他数据类型的操作数转换为字符串后,再进行拼串

    var a = 12,b = "11";
     var c = a+b ;//返回1211
    

      

    减号 -

    与加号类似,但是稍有不同

    遵循的规则为:

    如果两个操作数为数值,则执行常规运算

    如果有一个操作数为NaN,则返回NaN

    如果Infinity减Infinity,则返回NaN

    如果-Infinity减-Infinity,则返回NaN

    如果Infinity减-Infinity,则返回Infinity

    如果-Infinity减Infinity,则返回-Infiniy

    如果是 +0 减 +0 则返回 +0

    如果是 -0 减 +0 则返回 -0

    如果是-0 减 -0 则返回+0

    如果操作数为字符串,则先转换为数值,此处与加号有区别

    如果操作数为对象,也是先转换为数值

    4.乘性操作符  * /  %

     乘法 * 

    操作数是数值,则执行数值计算。其中一个操作符有符号,那么结果就是负数。如果结果超出了ECMAScript数值的表示范围,则返回Infinity或-Infinity

    有一个操作数为NaN,则结果是NaN

    如果是Inifinty与0相乘,则结果是NaN  ;与非0数值想成,则返回Inifinity或者-Infinity,取决于有符号操作数的符号

    如果是Infinity和Infinity相乘,则结果是Infinity

    如果不是数值,则先转换为数值,按照前面的进行操作

    除法 /

    操作数是数值,则执行数值计算。其中一个操作符有符号,那么结果就是负数。如果结果超出了ECMAScript数值的表示范围,则返回Infinity或-Infinity

    有一个操作数为NaN,则结果是NaN

    如果是Infinity和Infinity相除,则结果是NaN

    0和0相除,返回NaN

    非零的有限数被0除,则结果是Infinity或-Infinity,取决于有符号的操作数

    如果是Infinity被任何非零数值除,则结果是Infinity或 -Infinity,取决于符号操作数的符号

    如果不是数值,则先转换为数值,按照前面的进行操作

    % 取模

    两者都是数值,按照除法计算,返回除得的余数

    被除数是无穷大的值,除数是有限大的值,结果返回NaN

    被除数是有限大的值,除数是无穷大的值,则结果是被除数

    被除数是有限大的数值而除数是零,结果返回NaN

    被除数是零,则结果是零

    如果Infinity被infinity除,则结果是NaN

    如果一个操作符不是数值,则后台调用Number()将其转化为数值,按照前面的规则计算

    5.关系操作符 > <  >=  <=

    操作的规则:

     两个操作数都是数值,则执行数值比较

     两个操作数都是字符串,则比较字符串对应的字符编码

     两者有一个是数值,则另一个也被转化为数值

     两者有一个是对象,则将其转化为字符串(valueOf()或者toString()),按照前面的方法进行比较

     两者有一个是布尔值,则将转化为数值,进行比较

     相等操作符  ==   !==    ===     !==

     有一个操作数为布尔值,将其转化为数值后,再进行数值比较

    一个是字符串,另一个是数值,将字符串转换为数值后,再进行数值比较

    一个是对象,另一个不是对象,使用valueOf()得到的基本数据类型后,按照前面的进行比较

    注意:null和undifined是相等的

       在比较相等性前,不能将null和undefined进行转化

      有操作数为NaN,则返回false(两个都是NaN,也返回false,因为NaN不等于NaN)

     两个操作符为对象,两个操作数指向同一个 对象时,则返回true

    === 全等

     只在两个操作数未经转化前就相等的情况下,返回true

    注意:由于相等和不相等存在类型转换问题,为了保持代码中数据类型的完整性,推荐使用全等和不全等

    6.条件操作符(三元操作符)

     语法:条件表达式?语句1:语句2;      如果这个条件表达式为true,则返回输出语句1,是false则输出语句2  (注意语句之间的冒号)

    var num1 = 1,num2=2;
    var  max = num1 >num2? num1:num2;//输出2
    

      注:如果条件表达式为非布尔值,则先转换为布尔值

    7.赋值操作符

     复合操作符

    乘/赋值 *=   除/赋值 /=  模/赋值 %=   加/赋值 += 减/赋值 -= 

    var num =1; 
    num = num =2;
    
    
    //可以这样写
    var num = 1;
    num += 2;
    

      

  • 相关阅读:
    O(n)回文子串(Manacher)算法
    LightOJ 1282
    LightOJ
    LightOJ
    POJ-2563
    POJ-2398
    POJ-2318
    ZOJ-3318
    [svc]ftp协议数据连接的2种模式
    [py]python中的特殊类class type和类的两面性图解
  • 原文地址:https://www.cnblogs.com/chenpiaoxiaowu/p/11197775.html
Copyright © 2011-2022 走看看