zoukankan      html  css  js  c++  java
  • 交换变量的值

    题目:var a=1,b=2;交换a和b的值?

    1)利用第三方临时变量存值

    var a=1,b=2;
    var temp=0;
    temp=a;
    a=b;
    b=temp;
    console.log("a : "+a+",b : "+b)
    

    2)算术运算的方法

    var a=1,b=2;
    a=b-a;
    b=b-a;
    a=b+a;
    console.log("a : "+a+",b : "+b)
    

    或者

    var a=1,b=2;
    a=a+b;
    b=a-b;
    a=a-b;
    console.log("a : "+a+",b : "+b)
    

    这两种算法其实是一样的,用数轴的概念就比较好理解,a和b分别为数轴上的两个点,a=b-a;就是这两个点的距离,a现在代表的就是距离,此时b的值没有变化,b-a就是相当于b减掉a和b的距离,就是a的初始值1,把它赋值给b,此时完成了b的值是a的初始值1,a现在代表的还是距离,b+a的意思就是b现在的值加上这段距离,就是b的初始值,把它赋值给a,此时完成了a的值是b的初始值2;这中方法是利用了中间的差作为中间变量,第二种是利用的和作为中间变量,道理都是一样的,不明白的微信我吧(17346598520)

    3)利用按位异或运算符 (^)

    var a = 1,b = 2;
    a ^= b;
    b ^= a;
    a ^= b;
    console.log("a : " + a + ",b : " + b);
    

    这个异或运算符,在js中不常用,它的定义是当且仅当只有一个表达式的某位为 1 时,结果中的该位才为 1。否则,结果中的该位为0。在这里,a的二进制就是01,b的二进制就是10,所以01异或10的结果是11,此时a是11,b还是10,b异或a,结果是01,把值赋给了b完成了交换,此时a是11,b是01,异或以后是10,把值赋给了a,完成了交换。

    4)利用对象或者数组

    var a = 1,b = 2;
    a={'a':a,'b':b};
    b=a.a;
    a=a.b;
    console.log("a : " + a + ",b : " + b);
    

    或者

    var a = 1,b = 2;
    a=[a,b];
    b=a[0];
    a=a[1];
    console.log("a : " + a + ",b : " + b);
    
    

    这里需要注意的是把a和b的值给到对象或者数组上以后,再次赋值的顺序问题,如上,把值都保存到a中后,再次赋值的时候一定先给b赋值,然后在重新给a赋值才可以。

    5)利用运算符优先级

    var a = 1,b = 2;
    a = [b,b=a][0];
    console.log("a : " + a + ",b : " + b);
    

    具体是怎么赋值的过程我也不是很清楚,希望指教。这里应该需要知道js解析机制,预解析和运算符的优先级等知识点。

    6)ES6的结构赋值

    [a,b]=[b,a];
    

    具体的去看ES6结构赋值的知识点吧阮一峰:ES6入门

  • 相关阅读:
    108. Convert Sorted Array to Binary Search Tree
    How to check if one path is a child of another path?
    Why there is two completely different version of Reverse for List and IEnumerable?
    在Jenkins中集成Sonarqube
    如何查看sonarqube的版本 how to check the version of sonarqube
    Queue
    BFS广度优先 vs DFS深度优先 for Binary Tree
    Depth-first search and Breadth-first search 深度优先搜索和广度优先搜索
    102. Binary Tree Level Order Traversal 广度优先遍历
    How do I check if a type is a subtype OR the type of an object?
  • 原文地址:https://www.cnblogs.com/bonly-ge/p/9150210.html
Copyright © 2011-2022 走看看