JS中实现两个变量交换的七种办法
JS两个数据交换的七种办法
·
JS入门中有一个非常简单的小案例,就是定义两个变量,通过JS实现他们的数据交换,案例虽然小,但是其中的脑洞非常好玩,现在和大家分享一下。
1、定义一个空变量
let num,
a=123,
b=456;
num=a;
a=b;
b=num;
console.log(a,b);
最常见的办法,也没什么难度,需要一个空变量,下面的方法都不会再有变量
其实不使⽤临时变量的思路都是让其中⼀个变量变成⼀个a和b都有关系的值,这样可以先改变另⼀个变量值,最后改变原修改的变量值
2、利用算数和或算数减
let a=123,
b=456;
a+=b;
b=a-b;
a-=b;
console.log(a,b);
让a先变成a与b的‘和'(也可以换成a和b的差,⼀样的),‘和'减去b巧妙的得到了a的变量值赋予b ,再通过‘和'减去a的值得到了b的值赋予a,或者是下⾯的变式(差的形式)
let a=123,
b=456;
a -= b;
b = a + b;
a = b - a;
console.log(a,b);
3、利用位
let a = 123,
b = 456;
a ^= b;
b ^= a;
a ^= b;
console.log(a, b);
//或者这样
a = (b^=a^=b)^a;
通过底层位运算来进⾏交换变量值,不过JS中很少用位
4、利用对象
let a=123,
b=456;
a = {a:b,b:a};
b = a.b;
a = a.a;
console.log(a,b);
把a先变成了⼀个对象,这个对象保存着应该交换后的键值对,最后赋值
5、利用数组
let a = 123,
b = 456;
a = [a, b];
b = a[0];
a = a[1];
console.log(a, b);
和上面很像,只是换成了数组
6、仅供参考的大神写法
let a = 123,
b = 456;
a = [b,b=a][0];
console.log(a, b);
非常简单粗暴神奇的写法,脑洞天才
7、ES6的解构赋值语法
let a = 123,
b = 456;
[a,b] = [b,a];
console.log(a, b);
更多推荐
已为社区贡献1条内容
所有评论(0)