zoukankan      html  css  js  c++  java
  • 认识js中的&和&&

    在js中&&是逻辑运算符,而&是位运算符

    1.逻辑运算符&&

      运算方法:

      只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;

      只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

      总结:假前真后

      在JS世界中,一共有这几种情况被认定为假:fase,undefined,'',null,0与神奇的NaN。

      console.log(0&&1); 左边为假,不走了,打印结果为0;

      console.log(undefined&&1);左边为假,程序不走了,弹出的结果为undefined;

      console.log(true&&'');左边为真,程序继续,弹出的结果为'';

      console.log(NaN&&true);左边为假,程序不走了,弹出NaN;

    2.位运算符&

      &是表示位的与运算,把左右两边的数字转化为二进制,然后每一位分别进行比较,如果相等就为1,不相等即为0。同时&具有强制转换的功能,把false,true转换成了0和1进行比较。而0又表示false的意思,所以带有false的都挂掉了,偶尔也可以当做逻辑与来使用。

      1转换为二进制为1,2转换为二进制为10, 所以1&2实际是0001&0010,没有相等的部分,最终结果就是0了。

        console.log(34&7);打印出来的结果是什么呢?

        34进行二进制转换,得到的结果是10001

        7进行二进制转换,得到的结果是000111,

          注意,进行比较的时候,如果两边数字的长度不够,就从右到左对齐, 前面没有的部分补零就好,就像111和100010比较,为了大家能看的更清楚一点,我在111的前面加了三个0。

        所以JS解析的结果为100010&000111,只有倒数第二位是相等的,解析出来的结果就是10,转换为十进制就是2,所以打印出来的结果就是2了。

      判断奇偶数

           方法一:

        if(n%2 ===1 ){

          console.log('奇数')

        }else{

          console.log('偶数')

        }

       方法二: 

        if(n&1){

            console.log('奇数')//奇数转为二进制最后一位肯定是1,而偶数二进制的最后一位是0,1转换为二进制还是1,所以判断的结果只会是0或者1.

        }else{

            console.log('偶数')

        }

      区别:方法一显然是更麻烦一点的,因为平时的这些数值计算,计算机是要先转换成二进制再进行计算的,位运算是直接用二进制来进行计算的,如果我们用位运算符&来进行判断的话,计算速度就会提升很多。

    Talk is cheap,show me the code
  • 相关阅读:
    坚持博客
    虚拟机CentOS7.2 1611 Minimal最小化安装后桥接固定ip
    Js 希望某链接只能点击一次
    ThinkPHP3.2 杂记
    Mysql 杂记
    Linux挂载Win共享文件夹 一
    Linux 监测系统资源
    Phpstrom 书签应用
    php默认有最大执行时间
    tp3.2中配置链接多个数据库
  • 原文地址:https://www.cnblogs.com/qc-one/p/11447477.html
Copyright © 2011-2022 走看看