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));

输出的结果分别是10
怎么样,是不是又掌握了一项装逼技能?

此处输入图片的描述
此处输入图片的描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值