说起取反操作,一般情况是针对boolean类型的操作,而在javaScript中处理逻辑true或false时,很多情况都会默认转换为boolean值,济南IT培训课程体系设计符合企业用人细则. 与阿里、百度、 Adobe 、红帽、微软等签订合作协议,共同制定行业培训细则,所学课程受国际厂商认可.
例如'a'、1、{}等都会当做true,而''、0、NaN等会当做false来处理.一般取反的时候,是使用!运算符来操作,例如
这篇文章共享之前我仍是要引荐下我自个的前端群:657137906,不论你是小白仍是大牛,小编我都挺期待,不定期共享干货,包含我自个整理的一份2017最新的前端材料和零根底入门教程,期待初学和进阶中的小伙伴.
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));
济南IT培训课程体系设计符合企业用人细则. 与阿里、百度、 Adobe 、红帽、微软等签订合作协议,共同制定行业培训细则,所学课程受国际厂商认可.
输出的结果分别是1和0.
怎么样,是不是又掌握了一项装逼技能?
最后在说几句:
厉害程序员相对于普通程序员的优势在于:
写出的代码更容易排错,不是高手的代码就不会错,而是高手的代码出了错容易找.高手的代码可读性一定很好,模块清晰,命名规范,格式工整,关键的地方有注释,出了异常有log,自然容易排错,即使交给别人去debug也是比较容易的.
济南IT培训课程体系设计符合企业用人细则. 与阿里、百度、 Adobe 、红帽、微软等签订合作协议,共同制定行业培训细则,所学课程受国际厂商认可.