js中取非运算符与取反运算符
2021-09-30 本文已影响0人
平winK
![](https://img.haomeiwen.com/i7770970/ed3e96ed84d4a508.png)
关于取非运算符:
js中0为fasle,所以!0 就为true;
若判断字符串类型,!str为先判断类型 再对boolean做比较
![](https://img.haomeiwen.com/i7770970/41c4dd2ee0822f75.png)
按位取反运算符会把原来为0的值,变为1,原来为1的值变为0。
原因是按位取反将值转换为二进制再进行取反运算,
例如: 十进制1转换为二进制是0000 0001,十进制2转换为二进制是0000 0010
将0000 0001按位取反:1111 1110
将0000 0010按位取反:1111 1101
取反后第一位是1,为负数。负数转换为原码,第一位符号位不变,其余取反+1,
得到1000 0010,1000 0011
再将源码转换成二进制,就得出为-2,-3。
看起来有些麻烦 ~~~~~~~~~~~~~~
但是取反运算符在比较 值为-1的情况很好用 简化代码,比如:
![](https://img.haomeiwen.com/i7770970/8e6760382c8df8fa.png)
可以用于判断值为 -1 就push的场景。