js中取非运算符与取反运算符

取非

关于取非运算符: 

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的场景。

你可能感兴趣的:(js中取非运算符与取反运算符)