• 第 4 章(表达式和运算符)(4.8~ 4.)


    4.8.1 "+"运算符

    二元加法运算符“+”可以对两个数字做加法,也可以做字符串连接操作:

    如果当2个操作数都是数字或者字符串的时候,无需转换,数字会相加,字符串会拼接。对于其他情况,则要进行一些必要的类型转换,并且运算符的行为依赖于类型转换的结果。加号的转换规则优先考虑字符串连接,如果其中一个操作数是字符串或者转换为字符串的对象,另一个操作数将会转换为字符串,加法将进行字符串的连接操作。如果2个操作数都不是类字符串,那么将进行算术加法运算。

    从技术上讲,加法操作符的行为表现。

    ① 如果其中一个操作数是对象,则对象会遵循对象到原始值的转换规则转换为原始类值:日期对象是通过 toString() 方法执行转换,其他对象则通过 valueof() 方法执行转换(如果 valueof() 方法返回一个原始值的话)。由于多数对象都不具备可用的 valueof() 方法,因此它们会通过 tostring() 方法来执行转换。

    ② 在进行了对象到原始值的转换后,如果其中一个操作数是字符串的话,另一个操作数也会转换为字符串,然后进行字符串连接。

    ③ 否则,两个操作数都将转换为数字(或者NaN),然后进行加法操作。

    1+2          // 3 加法
    “1”+“2”      // 12 字符串拼接
    “1”+2        //  12 数字转换为字符串,然后拼接
    1+{}         // 1[object object] 对象转换为字符串后进行字符串连接
    true+true    // 2 布尔值转换为数字后做加法
    2+null       // 2 null 转换为0后做加法
    2+undefined  // NaN  undefined 转换为NaN 后做加法

    当加号运算符和字符串和数字一起使用时,需要考虑加法的结合性对运算顺序的影响。也就是说,运算结果是依赖于运算符的运算顺序的,比如:

    1+2+“blind mice”      // "3 blind mice"
    1+(2+"blind mice")    // "12 blind mice"

    4.8.2 一元算术运算符

    一元运算符作用于一个单独的操作数,并产生一个新值。在JS 中,一元运算符具有很高优先级,而且都是右结合。

    例如:一元加(+)、一元减(-)、递增(++)、递减(--)

    4.8.3 位运算符

    按位与(&)

    按位或( | )

    按位异或(^):位运算符“|”对它的整型操作数逐位执行布尔异或操作,异或是指第一个操作数为 true 或第二个操作数为 true。但两者不能同时为 true。如果两个操作数中只要一个相应位为 1(不能同时为1),那么结果中的这一位就是1 。例如:oxFoFo ^ oxFoFo = oxoFFo

  • 相关阅读:
    MFC中CTREECTRL的checkbox问题
    GLOG的使用说明
    安装Electron
    WIN32中DLL的建立
    MFC动态创建菜单
    C++迭代器
    VIM常用命令
    层次遍历二叉树
    sql存储过程中加引号
    Apache Tomcat 绿色版安装Service(服务)
  • 原文地址:https://www.cnblogs.com/cimuly/p/7382921.html
Copyright © 2020-2023  润新知