• JavaScript 赋值运算符


    赋值运算符(assignment operator)是将右边操作数(right operator)的值赋值给左边的操作数(left operator)

    如果在等号( = )前面再添加乘性操作符、加性操作符或位操作符,就可以完成复合赋值操作。这种复合赋值操作相当于是对常规表达式的简写。

    var num = 10;
    num = num +10//等价于
    var num = 10;
    num += 10;

    每个主要算数运算符(以及个别的其他操作符)都有对应的符合赋值操作符,这些操作符如下:

    名称 简写 含义
    赋值(Assignment) a = b a = b
    加赋值(Addition assignment) a += b a = a + b
    减赋值(Subtraction assignment) a -= b a = a - b
    乘赋值(Multiplication assignment) a *= b a = a * b
    除赋值(Division assigment) a  /= b a = a / b
    模赋值(Remainder assignment) a %= b a = a % b
    指数赋值(Exponentiation assignment) a **= b
    a = a ** b
    左移赋值(Left shift assignment) a <<= b a = a << b
    右移赋值(Right shift assignment) a >>= b
    a = a >> b
    无符号右移赋值(Unsigned right shift assignment) a >>>= b
    a = a >>> b
    按位与赋值(Bitwise AND assignment) a &= b a = a & b
    按位异或赋值(Bitwise XOR assignment) a ^= b a = a ^ b
    按位或赋值(Bitwise OR assignment) a |= b a = a | b

    一、赋值

    简单的赋值运算,就是将一个值赋给一个变量。

    如果想把一个值赋给多个变量,可以采用链式使用赋值运算符。

    语法:

    a = b

    实例:

    // 假设有以下变量
    a = 2;
    b = 9;
    c = 7;
    
    a = b;
    //将 b的值赋给 a,所以a 的值为 9
    a = b = c
    //将 c 的值赋给 b,b的值是 7,再将 b的值赋给 a,所以 a、b、c的值都是 7

    二、加赋值

    加赋值运算符把一个右值和一个变量相加,然后把相加的变量赋值给该变量。

    两个操作符的类型决定加赋值运算符的行为。算数相加或是字符串连接都有可能。

    语法

    a += b
    //等价于
    a = a + b

    实例:

    //定义下列变量
    aa = 'aa';
    bb = 8;
    cc = true
    
    //加赋值运算遵循着算数加运算符的规则
    bb += 1 
    // 数字相加  9;实例:
                            
    cc += 8
    //布尔值与数字相加  9
    
    aa += false
    // 布尔值与字符串相加 'aafalse'
    
    aa += bb
    // 布尔值与数字相加拼串 'aa8'

    三、减赋值

    减赋值运算符使一个变量减去右值,然后把结果赋给变量。

    语法:

    a -= b
    //等价于
    a = a - b

    实例:

    // 定义下面的变量
    // aa = 2
    
    aa -= 3   
    //aa的值为 -1
    aa -= 'wo'
    //返回值为 NaN

    四、除赋值

    除赋值运算符使一个变量除以右面的值,并且将结果赋值给该变量。

    语法:

    a /= b
    //等价于
    a = a / b

    实例:

    // 假定已定义了下面的变量
    //  aa= 5
    
    aa /= 2     // 2.5
    aa /= "foo" // NaN
    aa /= 0     // Infinity

    五、模赋值

    模赋值运算使一个变量除以右值,然后把余数赋值给该变量。

    语法:

    a %= b
    //等价于
    a = a % b

    实例:

    //假设一个变量
    a = 5
    
    a %= 2     // 1
    a %= 'foo' // NaN
    a %= 0     // NaN

    六、左移赋值

    左移赋值运算符使变量向左移动指定位数的比特位,然后将结果赋给该变量。

    语法:

    a <<= b
    //等价于
    a = a << b

    实例:

    var aa = 5; //  (00000000000000000000000000000101)
    aa <<= 2; // 20 (00000000000000000000000000010100)

    七、右移赋值

    右移赋值运算符使变量向右移动指定位数的比特位,然后将结果赋值给变量

    语法:

    a >>>= b
    //等价于
    a = a >>> b

    实例:

    var bar = 5; //   (00000000000000000000000000000101)
    bar >>= 2;   // 1 (00000000000000000000000000000001)
    
    var bar = -5; //    (-00000000000000000000000000000101)
    bar >>= 2;  // -2 (-00000000000000000000000000000010)

    八、无符号右移赋值

    无符号右移赋值运算符向右移动指定数量的比特位,然后把结果赋给变量

    语法:

    a >>>= b
    //等价于
    a = a >>> b

    实例:

    var bar = 5; //   (00000000000000000000000000000101)
    bar >>>= 2;  // 1 (00000000000000000000000000000001)
    
    var bar = -5; // (-00000000000000000000000000000101)
    bar >>>= 2; // 1073741822 (00111111111111111111111111111110)

    九、按位与赋值

    按位与赋值使用两个操作值的二进制进行表示,执行二进制异或运算,并且把结果赋值给变量。

     语法:

    a ^= b
    //等价于
    a = a ^ b

    实例:

    var bar = 5;
    // 5:     00000000000000000000000000000101
    // 2:     00000000000000000000000000000010
    bar &= 2; // 0

    十、按位或赋值

    按位或运算符使用两个操作值的二进制进行表示,执行按位或运算,并且把结果赋给变量。

    语法:

    a |= b
    //等价于
    a = a | b

    实例:

    var bar = 5;
    bar |= 2; // 7
    // 5: 00000000000000000000000000000101
    // 2: 00000000000000000000000000000010
    // -----------------------------------
    // 7: 00000000000000000000000000000111

    参考资料:

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Assignment_Operators

  • 相关阅读:
    初级安全入门——安全漏洞的检测与利用
    Gazebo11的安装与启动
    ROS入门(四)——Gazebo的基本使用
    ROS入门(二)——服务和全局参数
    ROS入门(一)——基本概念和话题
    数据结构与算法(三+)——列表的Java实现
    Java EE入门(二十)——Maven基础
    Java EE入门(十九)——Redis基础
    Java EE入门(十八)——Ajax&JSON基础
    npm中如何更新自己已经发布的1.0.0的模块包?
  • 原文地址:https://www.cnblogs.com/nyw1983/p/12184599.html
Copyright © 2020-2023  润新知