美文网首页
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总结一 js引入 js变量 值类型 引用值 运算符

  • JavaScript 02 (运算符和选择结构)

    js的关系运算符,js的逻辑运算符,js的赋值运算符,js的运算符的优先级问题,js的自增和自减,js的选择结构 ...

  • 运算符及js操作属性

    关系运算符 相等运算符 条件运算符 运算符的优先级 代码块 js操作属性 js操作style属性 js操作clas...

  • js运算符

    js基础语法:运算符,判断语句,数据类型,js对象 一、运算符 赋值运算符 =算数运算符 +-*/% ++...

  • 2020-03-16

    JavaScript 初识 《① JS 速览——进入 JS 的世界》[编号:js_01] 《② 运算符、运算符优先...

  • 2018-12-01

    赋值运算符 关系运算符 Unicode编码 相等运算符 条件运算符 运算符的优先级 代码块 js操作属性 js换肤...

  • JS操作属性、函数

    条件运算符 运算符的优先级 代码块 JS操作属性 JS换肤 JS操作style属性 JS操作

  • 每天总结二

    一、js总结二 比较运算符== 等于 === 全等(值和类型) != 不等于 大于 < 小于 = 大于或...

  • 2018-08-12

    一、js总结二 比较运算符 == 等于 x=8; x==8 为 false === 全等(值和类型) x===5 ...

  • 前端(运算符)

    与或运算 Unicode编码 相等运算符 条件运算符 js操作属性 js函数

网友评论

      本文标题:JS运算符总结

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