js数学小知识之巧妙取反
说起取反操作,一般情况是针对boolean类型的操作,而在javaScript中处理逻辑true或false时,很多情况都会默认转换为boolean值,例如'a'、1、{}
等都会当做true,而''、0、NaN
等会当做false来处理。一般取反的时候,是使用!
运算符来操作,例如
var boo = false; console.log(!boo,!!boo);
显而易见,输出的结果是true false
,但在实际开发过程中,总会遇到一些奇奇怪怪的情况,并不是所有的标识符刚刚好就是boolean值,例如在html标签上自定义的属性值很可能拿到的时候是字符串,这样的话就会将string类型的'false'
当做boolean类型的false
来处理,自然是不符合逻辑的。
那么我们是否可以用其他的方式来实现逻辑判断呢?那当然是可以的,前文说到了1、0
分别可以当做true、false
,so~,第二个问题又来了,如何针对1、0
进行相互取反的操作呢?
首先很多人想到的是
function test (boo){ if(boo === 1){ return 0; }else if(boo === 0){ return 1; } }
这样实现也未尝不可,但俗话说的好,撸码不装逼,等着遭雷劈
我们可以使用一些数学上的函数来非常简单的搞定1、0
之间取反的操作,大家都知道,0的非0次幂都等于0,而任意实数的0次幂等于1,结合0和1就可以利用0的0次幂等于1,0的1次幂等于0来相互取反。具体代码如下
var boo1 = 0; var boo2 = 1; console.log(Math.pow(0,boo1)); console.log(Math.pow(0,boo2));
输出的结果分别是1
和0
。
怎么样,是不是又掌握了一项装逼技能?
相关推荐
88274956 2020-11-03
runner 2020-09-01
梦的天空 2020-08-25
移动开发与培训 2020-08-16
ReunionIsland 2020-08-16
lyqdanang 2020-08-16
MyNameIsXiaoLai 2020-07-08
星辰的笔记 2020-07-04
csstpeixun 2020-06-28
letheashura 2020-06-26
liaoxuewu 2020-06-26
sunzhihaofuture 2020-06-21
FEvivi 2020-06-16
坚持着执着 2020-06-16
waterv 2020-06-14
xiaoge00 2020-06-14
firejq 2020-06-14
firstboy0 2020-06-14
e度空间 2020-06-12
zhongweinan 2020-06-10