JavaScript 的运算符【一】(算术运算符)

  • A+

运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript 提供了多种运算符,覆盖了所有主要的运算。

一.概述

  1. 算术运算符总览10个:①加法运算符:x + y;②减法运算符: x - y;③乘法运算符: x * y;④除法运算符:x / y;⑤指数运算符:x ** y;⑥余数运算符:x % y;⑦自增运算符:++x 或者 x++;⑧自减运算符:--x 或者 x--;⑨数值运算符:+x;⑩负数值运算符:-x
  2. 对象使用加法运算符,调用过程? 先使用valueof返回对象本身,然后调用valueof返回值的toString方法,输出为字符串,然后执行相加操作 具体见:加法运算符
  3. ++运算符放在前后的区别? ++x修改原值x++不会修改原值 具体见:自增和自减运算符

二.加法运算符

1.基本规则

  • 加法运算符+,用来求和,针对不同类型有不同的表现
  • 数值求和,非数值的相加,一boolean类型会转为数字;二其余类型与字符串相加就会转为字符串(不同的类型使用相同+的符号相加,出现不同的运算结果叫做重载)
    //一基本计算
    1 + 1 // 2
    
    //二boolean转为数字
    true + true // 2
    1 + true // 2
    
    //三与字符串相加
    'a' + 'bc' // "abc"
    1 + 'a' // "1a"
    false + 'a' // "falsea"
    //四重载
    '3' + 4 + 5 // "345"
    3 + 4 + '5' // "75"
    
  • 除了加法运算会重载其余运算符会将字符转为数值类型进行计算
    1 - '2' // -1
    1 * '2' // 2
    1 / '2' // 0.5
    

2.对象相加

  • 如果运算的是对象,则对象必须先转为原始类型的值,再相加;
  • 对象相加运算的流程:一对象调用valueOf对象返回自身;二调用对象的toString将自身转换为字符串,执行运算
    var obj = { p: 1 };
    obj + 2 // "[object Object]2"
    //与下面执行过程相同
    var obj = { p: 1 };
    obj.valueOf().toString() // "[object Object]"
    
  • 我们可以自定义valueoftoString修改对象相加的默认行为
  • 若自定义了valueOf,例如返回Number数据类型,就会调用Number数据类型的toString方法
    //一定义valueOf
    var obj = {
      valueOf: function () {
        return 1;
      }
    };
    
    obj + 2 // 3
    //二定义toString
    var obj = {
      toString: function () {
        return 'hello';
      }
    };
    
    obj + 2 // "hello2"
    //三如果是Date实例直接执行toString方法,不会执行重写的valueOf方法
    var obj = new Date();
    obj.valueOf = function () { return 1 };
    obj.toString = function () { return 'hello' };
    
    obj + 2 // "hello2"
    
    

三.自增和自减运算符

  • ++x修改原值x++不会修改原值
    var x = 1;
    var y = 1;
    //x是先返回当前值,然后自增,所以得到1
    x++ // 1
    //y是先自增,然后返回新的值,所以得到2
    ++y // 2
    

四.赋值运算符

  • 赋值运算符(Assignment Operators)用于给变量赋值
  • 复合的赋值运算符,运算规则:先进行指定运算,然后将得到值返回给左边的变量
        //一 =是常见赋值运算符
        // 将 1 赋值给变量 x
        var x = 1;
    
        // 将变量 y 的值赋值给变量 x
        var x = y;
        //=======================
        //二 与算术运算符
        // 等同于 x = x + y
        x += y
    
        // 等同于 x = x - y
        x -= y
    
        // 等同于 x = x * y
        x *= y
    
        // 等同于 x = x / y
        x /= y
    
        // 等同于 x = x % y
        x %= y
    
        // 等同于 x = x ** y
        x **= y
        //=======================
        //三 与位运算符的结合
        // 等同于 x = x >> y
        x >>= y
    
        // 等同于 x = x << y
        x <<= y
    
        // 等同于 x = x >>> y
        x >>>= y
    
        // 等同于 x = x & y
        x &= y
    
        // 等同于 x = x | y
        x |= y
    
        // 等同于 x = x ^ y
        x ^= y
    
zhangfeng

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: