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);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值