美文网首页
JS运算符总结

JS运算符总结

作者: 仙姑本姑 | 来源:发表于2019-12-08 15:55 被阅读0次

    赋值运算符

    名字 操作符 含义
    赋值 x=y 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

    左移位举例

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

    无符号右移与有符号右移

    1.有符号右移>>(若正数,高位补0,负数,高位补1)

    正数:例如4>>2
    首先写出4的二进制数,因为是正数所以最高位为0,也就是第一个
    0000 0000 0000 0000 0000 0000 0000 0100
    右移两位得到(高位补0)
    000000 0000 0000 0000 0000 0000 0000 01
    结果为:1,右移n位也就是4/(2^n)
    负数:例如-4>>2(高位补1)
    首先写出-4的二进制数,因为是负数所以最高位为1
    1000 0000 0000 0000 0000 0000 0000 0100
    然后写出-4补码:保证符号位不变,其余位置取反加1(从右往左遇到第一个1,然后剩下的全部取反就是了)
    1111 1111 1111 1111 1111 1111 1111 1100(补码)
    右移2位: 在高位补1
    1111 1111 1111 1111 1111 1111 1111 1111
    根据补码写出原码才是我们所求的结果, 保留符号位,然后按位取反再加上1
    100000 0000 0000 0000 0000 0000 0000 00(取反后的结果)
    100000 0000 0000 0000 0000 0000 0000 01(再加1)
    结果为:-1

    2:无符号右移>>>(不论正负,高位均补0)

    正数:例如4>>>2
    与4>>2的运算相同,结果也为1
    负数:例如-4>>>2
    首先写出-4的二进制数,因为是负数所以最高位为1
    1000 0000 0000 0000 0000 0000 0000 0100
    然后写出-4补码:保证符号位不变,其余位置取反加1(从右往左遇到第一个1,然后剩下的全部取反就是了)
    1111 1111 1111 1111 1111 1111 1111 1100(补码)
    右移2位: 在高位补0
    0011 1111 1111 1111 1111 1111 1111 1111
    结果为:1073741823

    按位异或举例

    异或--同为0,异为1

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

    比较运算符

    运算符 描述
    等于 (==) 如果两边操作数相等时返回true。
    不等于(!=) 如果两边操作数不相等时返回true
    全等 (===) 两边操作数相等且类型相同时返回true。
    不全等 (!==) 两边操作数不相等或类型不同时返回true。
    大于 (>) 左边的操作数大于右边的操作数返回true
    大于等于 (>=) 左边的操作数大于或等于右边的操作数返回true
    小于 (<) 左边的操作数小于右边的操作数返回true
    小于等于 (<=) 左边的操作数小于或等于右边的操作数返回true

    算术运算符

    运算符 描述 举例
    求余(%) 二元运算符. 返回相除之后的余数 12 % 5 返回 2。
    自增(++) 一元运算符. 将操作数的值加一. 如果放在操作数前面 (++x), 则返回加一后的值; 如果放在操作数后面 (x++), 则返回操作数原值,然后再将操作数加一 var x=3;
    console.log(++x); //4
    var y=3;
    console.log(y++); //3
    自减(--) 一元运算符. 将操作数的值减一. 前后缀两种用法的返回值类似自增运算符 var x=3;
    console.log(--x); //输入2,x=2
    var y=3;
    console.log(y--);//输出3,x=2;
    一元负值符(-) 一元运算符,返回操作数的负值. var x=3; console.log(-x); //输入-3
    一元正值符(+) 一元运算符, 如果操作数在之前不是number,试图将其转换为number console.log( +'3' ); // 3
    console.log( '3' ); // '3'
    console.log(+true); // 1
    指数运算符(**) 计算 base(底数) 的 exponent(指数)次方, 表示为base^exponent 2 ** 3 returns 8.10 ** -1 returns 0.1.

    位运算符

    位运算符将它的操作数视为32位元的二进制串(0和1组成)而非十进制八进制或十六进制数。例如:十进制数字9用二进制表示为1001,位运算符就是在这个二进制表示上执行运算,但是返回结果是标准的JavaScript数值。

    Operator Usage Description
    按位与 a & b 在a,b的位表示中,每一个对应的位都为1则返回1, 否则返回0
    按位或 a (或)b 在a,b的位表示中,每一个对应的位,只要有一个为1则返回1, 否则返回0.
    按位异或 a ^ b 在a,b的位表示中,每一个对应的位,两个不相同则返回1,相同则返回0.
    按位非 ~ a 反转被操作数的位。
    左移 a << b 将a的二进制串向左移动b位,右边移入0.
    算术右移 a >> b 把a的二进制表示向右移动b位,丢弃被移出的所有位.(译注:算术右移左边空出的位是根据最高位是0和1来进行填充的)
    无符号右移(左边空出位用0填充) a >>> b 把a的二进制表示向右移动b位,丢弃被移出的所有位,并把左边空出的位都填充为0

    位运算符范例

    表达式 结果 二进制描述
    15 & 9 9 1111 & 1001 = 1001
    15 (或)9 15 1111 (或) 1001 = 1111
    15 ^ 9 6 1111 ^ 1001 = 0110
    ~15 -16 ~00000000...00001111 = 11111111...11110000
    ~9 -10 ~00000000...00001001 = 11111111...11110110

    注意位运算符“非”将所有的32位取反,而值的最高位(最左边的一位)为1则表示负数

    逻辑运算符

    运算符 范例 描述
    逻辑与(&&) expr1 && expr2 (逻辑与) 如果expr1能被转换为false,那么返回expr1;否则,返回expr2。因此,&&用于布尔值时,当操作数都为true时返回true;否则返回false.
    逻辑或 expr1 (逻辑或)expr2 (逻辑或) 如果expr1能被转换为true,那么返回expr1;否则,返回expr2。因此,用于布尔值时,当任何一个操作数为true则返回true;如果操作数都是false则返回false。
    逻辑非(!) !expr (逻辑非) 如果操作数能够转换为true则返回false;否则返回true。

    字符串运算符

    它可以在字符串值中使用,连接操作符(+)连接两个字符串值相连接,返回另一个字符串,它是两个操作数串的结合。
    例如,

    console.log("my " + "string"); // console logs the string "my string".
    简写操作符 += 也可以用来拼接字符串
    

    例如:

    var myString = "alpha";
    myString += "bet"; // 返回 "alphabet"  
    

    条件(三元)运算符

    条件运算符是JavaScript中唯一需要三个操作数的运算符。运算的结果根据给定条件在两个值中取其一。语法为:

    条件 ? 值1 : 值2
    

    如果条件为真,则结果取值1。否则为值2
    例如,

    var status = (age >= 18) ? "adult" : "minor";
    

    age 大于等于18的时候,将“adult”赋值给status;否则将“minor”赋值给 status

    逗号操作符

    逗号操作符(,)对两个操作数进行求值并返回最终操作数的值。它常常用在 for 循环中,在每次循环时对多个变量进行更新。

    for (var i = 0, j = 9; i <= j; i++, j--)
      console.log('a[' + i + '][' + j + ']= ' + a[i][j]);
    

    一元操作符

    一元操作符仅对应一个操作数。

    • delete
    • typeof
    • void 表明一个运算没有返回值

    关系操作符

    • in
      如果所指定的属性确实存在于所指定的对象中,则会返回true
    • instanceof
      如果所判别的对象确实是所指定的类型,则返回true。

    运算符优先级

    1.算数运算符 +- * / %
    2.关系运算符 > < >= <= == === != !==
    3.逻辑运算符 && || !
    4.赋值运算符 =
    逻辑运算符优先级:先非后与再或

    相关文章

      网友评论

          本文标题:JS运算符总结

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