关于取非运算符:
js中0为fasle,所以!0 就为true;
若判断字符串类型,!str为先判断类型 再对boolean做比较
按位取反按位取反运算符会把原来为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的情况很好用 简化代码,比如:
逻辑取反可以用于判断值为 -1 就push的场景。
网友评论