js 少用的逻辑运算符 ~~ !! << ^等运算符介绍

简单说一下 ~ !! <<这些运算符,因为今天破解一个反爬虫加密,在这段密文中发现了这种运算符,所以复习一下。

~运算符:这个运算符在js中表示按位取反(注意:平时我们取反用的都是!这个与~不一样,按位取反就是先把一个字符串转成二进制然后对每一位取反),就是在处理二进制的时候按位取反,如果是~~则就是再反回来,例如~false(-1) ~~false会转成0 这样可以实现类型转换,还可以~~null(0) ~~""(0) 空与null也会被转成0将字符类型转成了数字类型~true(-2) ~~true(1),~~[](0),其实~~undefined(0)也是0这个是数组取反空数组是0转回的值都是一些奇怪的值,更多有意思的自己去玩玩


!运算符:它一般用于类型判断,用它来返回一个布尔值,例如!null(true) !undefined(true) !''(true) !1(false) ,这个比较简单不用多讲,大家平时都在用的,但是这里有一个技巧,用这个符号来判断变量是否有内容,例如

if(!!var){
  用这个来判断变量是否有内容,它等同于var!=null&&typeof(var)!=undefined&&var!=''
 }

^运算符:按位异或a ^ b 对于每一个比特位,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0,这个有点烧脑筋。


<<左移运算符:a << b将 a 的二进制形式向左移 b (< 32) 比特位,右边用0填充。还有一个>>右移与左移差不多,但是右移还要多一个>>>运算符,>>是有符号的右移,>>>是无符号的右移。需要注意的是二进制运算符。


这些运算符单个用,还可以要是用多了脑细胞都要烧死光。




Tags javascript

留言(0)

评论