zoukankan      html  css  js  c++  java
  • 交换两个数的几种方法对比

    (1) 需要第三方变量,开发推荐使用这种

      var m = 10;
      var n = 20;
    
      var temp = m;
      m = n;
      n = temp;
      console.log(m, n) // 20, 10
    

    (2) 不需要第三方变量, 这种有弊端, 有可能会超出数值取值范围,特别是在强类型语言中。

      var m = 100;
      var n = 200;
    
      m = m + n;
      n = m - n;
      m = m - n;
      console.log(m, n) // 200, 100
    

    (3) 不需要第三方变量,使用位运算符 ^ 按位异或

     var m = 100;
     var n = 200;
    
     m = m ^ n;
     n = m ^ n;
     m = m ^ n;
      console.log(m, n)
    

    一个数据对另一个数据位异或两次,该数本身不变,而且与顺序无关,即支持交换律:

      var a = 10
      var b = 5
      console.log(a ^ a ^ b) // 5
      console.log(a ^ b ^ a) // 5
      console.log(b ^ a ^ a) // 5
    
    // 扩展:一个数据对另一个数据位异或偶数次(>=2),该数本身不变
    console.log(b ^ a ^ a ^ a ^ a) // 5
    

    (4) JS数组的解构赋值

    var a = 10;
    var b = 5;
    
    [a, b] = [b, a]
    
    // 解构赋值是一种语法糖,他会被编译为如下代码:
    var _a;
    var a = 10;
    var b = 5;
    
    _a = [b, a], a = _a[0], b = _a[1];
    
  • 相关阅读:
    命令[34]
    命令[33]
    命令[27]
    命令[38]
    命令[19]
    命令[22]
    命令[30]
    命令[37]
    命令[23]
    命令[26]
  • 原文地址:https://www.cnblogs.com/GManba/p/13294226.html
Copyright © 2011-2022 走看看