js 交换变量值的方法总汇菜鸟教程网_变量入门基础教程

这篇文章总结七种办法来交换a和b的变量值 。交换变量值方案一最最最简单的办法就是使用一个临时变量了 不过使用临时变量的方法实在是太low了var t;
t = a;
a = b;
b = t;首先把a的值存储到临时变量中,然后b赋值给a ,最后拿出临时变量中的a值赋给b ,这个办法是最基本的了。交换变量值方案二下面的方案都不会有临时变量,我总结了一下 :其实

js 交换变量值的方法总汇菜鸟教程

这篇文章总结七种办法来交换a和b的变量值 。

js 交换变量值的方法总汇菜鸟教程网_变量入门基础教程

交换变量值方案一

最最最简单的办法就是使用一个临时变量了 
不过使用临时变量的方法实在是太low了

var t;
t = a;
a = b;
b = t;

首先把a的值存储到临时变量中,然后b赋值给a ,最后拿出临时变量中的a值赋给b ,这个办法是最基本的了。

交换变量值方案二

下面的方案都不会有临时变量,我总结了一下 :
其实不使用临时变量的思路都是让其中一个变量变成一个a和b都有关系的值,这样可以先改变另一个变量值, 最后改变原修改的变量值 。
比如这个

a = a + b;
b = a - b;
a = a - b;

让a先变成a与b的‘和’(也可以换成a和b的差,一样的) 
‘和’减去b巧妙的得到了a的变量值赋予b 
再通过‘和’减去a的值得到了b的值赋予a 
或者是下面的变式(差的形式)

a = a - b;
b = a + b;
a = b - a;

但是感觉和的形式更容易理解

交换变量值方案三

这种方法对于第一次学习JavaScript的同学来说可能不了解 ,因为我们JavaScript很少会用到位操作 ,这是我在以前看算法竞赛书的时候学来的 ,通过底层位运算来进行交换变量值 ,也是上面的方案演化来的。

a ^= b;
b ^= a;
a ^= b;

了解一下吧 :C++甚至可以a^=b^=a^=b来完成任务 ,但我发现JavaScript不可以,不过我们可以这样

a = (b^=a^=b)^a;

交换变量值方案四

把a先变成了一个对象 ,这个对象保存着应该交换后的键值对 ,最后赋值搞定

a = {a:b,b:a};
b = a.b;
a = a.a;

交换变量值方案五

和上面的方法很像,只不过对象换成了数组

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

交换变量值方案六

这个办法十分的巧妙 ,不是我想出来的 ,想出来的人一定是大神,除非他是托梦想出来的 ,简单粗暴一行代码交换了a和b的变量值

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

根据运算符优先级,首先执行b=a 
此时的b直接得到了a的变量值 
然后一步数组索引让a得到了b的值(简直不能再厉害)

交换变量值方案七

最后我的方案是利用了ES6的解构赋值语法 ,它允许我们提取数组和对象的值,对变量进行赋值 
(旧版本浏览器不能使用ES6语法)

[a,b] = [b,a];
海计划公众号