运算符

作者: 尘满面鬓微霜 | 来源:发表于2017-02-27 10:31 被阅读0次

    加法运算符

    可以处理算术的加法,也可以用作字符串连接,它们都写成+。加法运算符以外的其他算术运算符(比如减法、除法和乘法),都不会发生重载。它们的规则是:所有运算子一律转为数值,再进行相应的数学运算。

    • 如果运算子是对象,先自动转成原始类型的值(即先执行该对象的valueOf方法,如果结果还不是原始类型的值,再执行toString方法;如果对象是Date实例,则先执行toString方法)。
    • 两个运算子都是原始类型的值以后,只要有一个运算子是字符串,则两个运算子都转为字符串,执行字符串连接运算。
    • 否则,两个运算子都转为数值,执行加法运算。
    //下面的写法,可以用来将一个值转为字符串。
    x + ''
    
    //加法运算符会将其他类型的值,自动转为字符串,然后再执行连接运算。
    [1, 2] + [3]
    // "1,23"
    // 等同于
    String([1, 2]) + String([3])
    // '1,2' + '3'
    
    //数值运算符的作用在于可以将任何值转为数值
    +true // 1
    +[] // 0
    +{} // NaN
    

    余数运算符

    //运算结果的正负号由第一个运算子的正负号决定。为了得到正确的负数的余数值,需要先使用绝对值函数
    -1 % 2 // -1
    1 % -2 // 1
    

    比较运算符

    比较运算符可以比较各种类型的值,不仅仅是数值。除了相等运算符号和精确相等运算符,其他比较运算符的算法如下。

    • 如果两个运算子都是字符串,则按照字典顺序比较(实际上是比较Unicode码点)。
    • 否则,将两个运算子都转成数值,再进行比较(等同于先调用Number函数)。
    //运算结果的正负号由第一个运算子的正负号决定。为了得到正确的负数的余数值,需要先使用绝对值函数
    5 > '4' // true
    // 等同于 5 > Number('4')
    // 即 5 > 4
    
    true > false // true
    // 等同于 Number(true) > Number(false)
    // 即 1 > 0
    
    2 > true // true
    // 等同于 2 > Number(true)
    // 即 2 > 1
    

    相关文章

      网友评论

          本文标题:运算符

          本文链接:https://www.haomeiwen.com/subject/psqzwttx.html