Foreword
This article summarizes seven ways to exchange the variable values of a and b
var a = 123; var b = 456;
Exchange variable value scheme one
The simplest and easiest way is to use a temporary variable, but use temporary The variable method is really too low
var t; t = a; a = b; b = t;
First store the value of a in a temporary variable, then assign b to a, and finally take out the value of a in the temporary variable and assign it to b. This method is the most basic That’s it
Exchange variable value plan two
The following plans will not have temporary variables. I summarized it. In fact, the idea of not using temporary variables is to make one of the variables into a value that is related to both a and b. , in this way, you can change another variable value first, and finally change the original modified variable value
For example, this
a += b; b = a - b; a -= b;
Let a first become the 'sum' of a and b (it can also be changed to the 'sum' of a and b Difference, the same), 'and' minus b cleverly gets the variable value of a and assigns it to b, and then subtracts the value of a through 'and' to get the value of b and assigns it to a, or the following variation (difference form )
a -= b; b = a + b; a = b - a;
But the form of sum is easier to understand
Exchange variable value scheme three
This method may not be understood by students who are learning JavaScript for the first time, because we rarely use JavaScript in place Operation, this is what I learned when I read the algorithm competition book in the past. It uses low-level bit operations to exchange variable values, which is also the evolution of the above scheme. =b^=a^=b to complete the task, but I found that JavaScript cannot
But we can do thisa ^= b; b ^= a; a ^= b;
Exchange variable value scheme four
turn a into an object first, this object Save the key-value pairs that should be exchanged, and finally assign them
a = (b^=a^=b)^a;
Exchange variable value scheme 5
is very similar to the above method, except that the object is replaced by an array
a = {a:b,b:a}; b = a.b; a = a.a;
Exchange variables Value plan six
This method is very clever. I didn’t come up with it. The person who came up with it must be a great god, unless he dreamed it up. A simple and crude line of code exchanged the variable values of a and b
a = [a,b]; b = a[0]; a = a[1];
According to the operator priority, b=a is executed first. At this time, b directly gets the variable value of a, and then one step of array indexing allows a to get the value of b (it couldn’t be more powerful)
Exchange variable value plan 7
My final solution is to use the destructuring assignment syntax of ES6, which allows us to extract the values of arrays and objects and assign values to variables. However, the chrome browser I am currently testing has already implemented it
a = [b,b=a][0];
It can Seeing that the destructuring assignment syntax makes it super simple to exchange variable values, this destructuring assignment syntax requires a lot to talk about. It is not the focus of today. I will summarize it in the future and won’t talk about it now
Summary
This article mentioned this I don’t know if there are any other ways to exchange variable values. Although it is an insignificant problem, it can be used to exercise our imagination.