zoukankan      html  css  js  c++  java
  • js中~~和^=分别代表什么,用处是什么?

    先看个栗子:

    ~~false === 0  
    ~~true === 1
    ~~undefined === 0
    ~~!undefined === 1
    ~~null === 0
    ~~!null === 1  
    ~~"" === 0
    ~~!"" === 1

    ~是按位取反的意思,计算机里面处理二进制数据时候的非,~~就是再转回来,利用两个按位取反的符号,进行类型的转换,转换成数字符号。

    而在计算机里面的^=是异或运算,相同取0,不同取1.

    两个整数交换可以酱紫表示:

    var  a = 10,b=20;
    a ^= b; b^=a;a^=b;   

     将a = a ^= b; b = b^=a; a = a^=b;在js中类似于:

    var a = 1,b = 2;
    a = a + b;
    b = a - b;
    a = a - b;
    a // 2
    b //1
    

    不过这种方法适用于任意两个数字类型的交换,无论是整数类型还是小数。

    其次,交换两个变量,最简单的方式是:

    var a = 2,b = 'Miya';
    [a,b,] = [b,a,]
    a // Miya
    b //2
    

     这个是ES6中的数组的解构赋值,很方便的进行两个变量的交换。 

  • 相关阅读:
    盒模型(框模型)
    边框
    尺寸及溢出处理
    HTML标签分类
    尺寸单位和颜色的取值
    选择器的优先级
    C++ 代码模板
    LC 425. Word Squares 【lock,hard】
    LC 660. Remove 9 【lock, hard】
    LC 759. Employee Free Time 【lock, hard】
  • 原文地址:https://www.cnblogs.com/tangjiao/p/9131993.html
Copyright © 2011-2022 走看看