zoukankan      html  css  js  c++  java
  • 第 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

  • 相关阅读:
    leetcode 78. 子集 JAVA
    leetcode 91. 解码方法 JAVA
    leetcode 75. 颜色分类 JAVA
    leetcode 74 搜索二维矩阵 java
    leetcode 84. 柱状图中最大的矩形 JAVA
    last occurance
    first occurance
    classical binary search
    LC.234.Palindrome Linked List
    LC.142. Linked List Cycle II
  • 原文地址:https://www.cnblogs.com/cimuly/p/7382921.html
Copyright © 2011-2022 走看看