zoukankan      html  css  js  c++  java
  • 交换两个变量的值,不借助第三个变量的 三种方法(JS实现)

    第一种:算术运算法

    var a = 10;
    var b = 12;
    a = b - a; 
    b = b - a; 
    a = b + a; 

    它的原理是:把a、b看做数轴上的点,围绕两点间的距离来进行计算。
    具体过程:第一句“a=b-a”求出ab两点的距离,并且将其保存在a中;第二句“b=b-a”求出a到原点的距离(b到原点的距离与ab两点距离之差),并且将其保存在b中;第三句“a=b+a”求出b到原点的距离(a到原点距离与ab两点距离之和),并且将其保存在a中。完成交换。

    效果:

     

    第二种:借助数组

    原理不必多说,借助数组的下标及运算符的优先级实现

    var a = 1,b = 2;
    a = [b, b = a][0];

    效果:

    第三种:位运算

    var a = 1, b = 2;
    a ^= b; // a =a ^ b = 1 ^ 2 = 3
    b ^= a; // b = b ^ (a ^ b) = 2 ^ (1 ^ 2) = 1
    a ^= b; 

    原理:

    ^运算符跟|类似,但有一点不同的是 如果两个操作位都为1的话,结果产生0。

    1的二进制表示为 0 0 0 0 0 0 1

    3的二进制表示为 0 0 0 0 0 1 1

    所以 1 ^ 3的结果为2

    效果:

  • 相关阅读:
    软件测试人员的要求
    冒烟测试和回归测试的区别
    [go]struct
    [go]socket编程
    [go]gorhill/cronexpr用go实现crontab
    [go]os/exec执行shell命令
    [go]time包
    [go]etcd使用
    [go]redis基本使用
    [go]go操作mysql
  • 原文地址:https://www.cnblogs.com/black-humor/p/8279187.html
Copyright © 2011-2022 走看看