这是我参与8月更文挑战的第六天,活动详情查看:8月更文挑战
操作符
操作符包括数学操作符(加减乘除)、位操作符、关系操作符等等。操作符可以用于各种数据类型,如字符串、数值、布尔值等,也可以用于对象。在给对象用操作符时,通常会调用之前提到过的valueOf()和/或toString()方法先取到可以计算的值。
一元操作符
只操作一个值的操作符叫做一元操作符。
递增/递减操作符
递增和递减操作符有两个版本,前缀版和后缀版。
- 前缀版:变量的值会在语句被求值之前改变。
- 后缀版:语句会在被求值后才发生。
let a = 2;
let b = 20;
let result1 = a-- + b; //22
let result2 = --a + b; //20
一元加和减
需要注意的是如果把一元加或减操作符用到非数值时,会使用Number()转型函数一样的类型转换。
位操作符
-
位操作符用于内存中表示数值的位来操作数值。
-
JavaScript 中所有的数值都以 64 位格式储存,但位操作符并不直接操作 64 位的值。而是现将 64 位的值转换成 32 位的整数,然后执行操作,最后将结果转回 64 位
-
计算一个数的二进制补码的步骤:
- 求这个数值绝对值的二进制码
- 求二进制反码,0和1互换
- 得到的二进制反码加1
按位非
按位非用波浪符表示(~),按位非的最终效果是对数值取反并减1。
按位与
按位与用和号表示(&),操作两个数,将两个数的二进制每一位对齐然后比对,同时为1的位数才为1。
按位或
按位或用管道符表示(|),操作两个数,将两个数的二进制每一位对齐然后比对,只要有一个数为1就返回1。
按位异或
按位异或用脱字符表示(^),操作两个数,将两个数的二进制每一位对齐然后比对,两个的同一位不同时为1,相同时为0。
左移
左移操作符用两个小于号表示(<<),按照指定的位数将数值的所有位往左移动,用0填补空位,但不会影响符号位。
有符号右移
有符号右移用两个大于号表示(>>),将数值的32位都右移,保留符号,用0填补空位。
无符号右移
无符号右移用三个大于号表示(>>>),将数值的32位右移。不保留符号位。