我懒了,我在word 上的图片复制到这里,结果没有,我的图片又多,不想在一个个复制过来。我还是放在我的文件里面吧。
- 操作符
ECMScript操作符与众不同之处在于,它们能够适用于很多值,例如字符串、数字值、布尔值、甚至对象。不过,在应用于对象时,相应的操作符通常都会调用对象的valueOf()和(或)toString()方法,以便取得可以操作的值。
4、1 一元操作符
- 递增和递减操作符:++,--
遵循规则:
- 一元加和减操作符:+、-
对于非数值应用一元加、减操作符时,该操作符会想Number()转型函数一样对这个值执行转换。
4、2位操作符:
负数:二进制补码;
(1)、求这个负数的绝对值二进制码,
(2)、反码再加1,反码 :0->1,1->0;
(3)、
- 按位取非(NOT):
按位非的操作符由一个波浪线(~)表示,执行结果:返回数字的反码(二进制取反)
按位非操作的本质:操作数的负值减一
- 按位与(AND)
按位与操作符由一个和号字符(&)表示,
- 按位或(OR)
按位或操作符由一个竖线符号(|)表示
- 按位异或(XOR)
按位异或操作符由一个插入符号(^)表示。
逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。
算术移位:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充,所以一般用在右移运算中。 [1]
对于无符号型值,算术移位等同于逻辑移位。
而对于有符号型值 ,算术左移等同于逻辑左移,算术右移补的是符号位,正数补0,负数补1。
- 左移(<<)
左移操作符由两个 小于号(<<)表示。这个操作符会将数值的所有位向左移动指定的位数。注意:左移不会影响到操作数的符号位
- 有符号的右移(>>)
有符号的右移操作符由两个大于号(>>)表示。这个操作符会将数值向右移动,但保留符号位(即正负号标记)。
在ECMSciprt会用符号位的值来填充所有的空位,以便得到一个完整的值。
- 无符号右移(>>>)
无符号右移操作符由3个大于号(>>>)表示,这个操作符会将数值的所有32位都向右移动。对于正数来说,无符号右移与右符号右移相同。
但是对于负数。首先无符号右移以0来填充空位,而不是像有符号为右移那样以符号值来填充空位。所以,无符号的正数跟有符号结果相同。但是对于负数的结果不一样。其次,无符号右移操作符会把负数的二进制当成正数的二进制码。而且负数以其绝对值的二进制补码形式表示。
4、3 布尔操作符
布尔操作符一共有3个:非(NOT)、与(AND)、或(OR)
- 逻辑非
逻辑非操作符由一个叹号(!)表示。对操作数进行转换位一个布尔值,取反。
转为规则布尔类型规则:
逻辑非操作符取反规则:
- 逻辑与
逻辑与操作符由两个和号(&&)表示。
规则:
4、4乘性操作符
3个乘性操作符:乘法、除法、求模。如参与乘性计算的某个操作数不是数值,会通过Number()转型函数将其转换为数值。
1、乘法
乘法操作符有星号(*)表示。
规则:
2、除法
除法操作符由一个斜线符号(/)表示。
规则:
3、求模
求模(余数)操作符由一个百分号(%)表示。
规则:
4、5加性操作符
1、加法(+)
规则:
2、减法
规则:
4、6关系操作符
小于(<)、大于(>)、小于等于(<=)、大于等于(>=)
字符串跟数值比较,都先转为数值。任何值跟NaN比较,都是false
4.7相等操作符
两组操作符:相等和不相等---先转换再比较,
全等和不全等---仅比较而不转换
1、相等(==)和不相等:(!=)
2、全等(===)和不全等(!==)
就是类型要一样,值也要一样,注意在相等中null==undefined,返回true、但是null===undefined,返回false。因为类型不同
4.8、条件操作符