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

1

2

var a = 123;

var b = 456;

交换变量值方案一

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

1

2

3

4

var t;

t = a;

a = b;

b = t;

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

交换变量值方案二

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

比如这个

1

2

3

a += b;

b = a - b;

a -= b;

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

1

2

3

a -= b;

b = a + b;

a = b - a;

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

交换变量值方案三

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

1

2

3

a ^= b;

b ^= a;

a ^= b;

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

不过我们可以这样

1

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

交换变量值方案四

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

1

2

3

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

b = a.b;

a = a.a;

交换变量值方案五

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

1

2

3

a = [a,b];

b = a[0];

a = a[1];

交换变量值方案六

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

1

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

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

交换变量值方案七

最后我的方案是利用了ES6的解构赋值语法,它允许我们提取数组和对象的值,对变量进行赋值,不过我现在测试用的chrome浏览器已经实现了

1

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

可以看到解构赋值语法让我们的交换变量值变得超级简单,这个解构赋值语法要是讲的话要讲很多不是今天的重点,以后会在再总结现在就不讲了

总结

本文提到了这么多交换变量值的方法,不知道还有没有其他办法,虽然它是一个无关紧要的问题,不过可以练一练我们的脑洞。希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

JavaScript交换两个变量值的七种解决方案相关推荐

  1. 用html5交换两个变量的值,JavaScript交换两个变量值的七种解决方案

    前言 这篇文章总结了七种办法来交换a和b的变量值 var a = 123; var b = 456; 交换变量值方案一 最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太low了 ...

  2. python中交换两个变量值的几种方式?

    python中交换两个变量值的几种方式 1.python中独有的,也是最简单的方式: a,b=b,a 2.引入第三个变量,可以看作两个装满牛奶的瓶子a和瓶子b,如果我想交换这两个瓶子中的牛奶,就需要一 ...

  3. 交换两个变量值的几种方法-C语言初学者

    1.借用一个中间变量交换两个变量 #include<stdio.h> int main() {int i=0;int j =0;int n = 0;printf("请输入两个要交 ...

  4. 交换两个变量值的几种方法;

    1.借用一个临时值交换两个变量: #include <stdio.h> int main() {int num1 = 5;int num2 = 8;int temp;//申请一个临时变量p ...

  5. 交换两个变量值的四种方法

    面试题: 交换两个变量的值 int a = 10; int b = 20; 方案A:使用第三方变量(开发中使用) int c = a; a = b; b = c; 方案B:用异或的特点实现(面试使用) ...

  6. 交换两个变量值的三种方法

    文章目录 交换两个变量的值的方法 方法1:定义临时变量 方法2:采用加减操作来实现交换 方法3:利用异或运算符进行操作 交换两个变量的值的方法 方法1:定义临时变量 public class Test ...

  7. C++交换两个变量值的方法

    简单地列一下交换两个变量值地几种方法. 1.通过第三方实现,这一种也是最最最常见普通的方法: void swap(int *a, int *b) {int tmp = *a;*a = *b;*b = ...

  8. RUNOOB python练习题47 交换两个变量值

    用来练手的python练习题,原题链接: python练习实例47 题干: 两个变量值互换 在C语言C++中我们要构造一个能交换两个变量值的函数很方便,我们可以使用指针,或者C++中的引用.那么在没有 ...

  9. 7-利用函数交换两个变量值的方法

    利用函数交换两个变量值的方法 1.利用一个中间变量 void Swap(int *p1,int *p2) {int temp=0;//定义一个中间变量temp=*p1;//把a的值赋给中间变量*p1= ...

最新文章

  1. 关于计算机中二进制原码,反码,补码的简要解释
  2. iOS证书及ipa包重签名探究
  3. C++11新特性之十:enable_shared_from_this
  4. 国产plc做modbus从站_Modbus-RTU通信
  5. java公司自己封装的框架_SpringBoot封装自己的Starter的实现方法
  6. AcWing基础算法课Level-2 第六讲 贪心
  7. java 字符串 移位_算法学习之字符串左移和右移
  8. CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
  9. 51CTO的企业文化——水文化
  10. SimpleDateFormat-多线程问题
  11. FreeSWITCH在会议室中持续播放音频文件
  12. 电脑重启只剩下c盘怎么办_我的电脑正在正常运行突然自动重启了,重启后发现系统只剩下C盘了,请教怎么恢复?...
  13. 文言文的理解 —— 字词篇
  14. 西点教育计算机二级证,拍了拍你:西式面点师证报名报考政策须知
  15. zoj 1104 Leaps Tall Buildings(超人不会飞- -。。)
  16. Centos 7 freeradius 搭建企业wifi认证服务
  17. IDEA中使用properties连接mysql8.0.13
  18. Android 系统时间自动更新机制
  19. 那些被踢“出局”的创始人,现在还好吗?
  20. 一个好的PS笔刷(笔触)下载论坛

热门文章

  1. 在IDEA上使用GitHub Copilot,同样的样例,你会怎么实现?
  2. 信息安全-零信任-SDP技术到底有多能打?
  3. 编写第一个正式的网页
  4. vue渲染缓慢我遇到的情况解决
  5. 关于Spring 版本和Jackson版本兼容问题
  6. 2014年04月10日
  7. ARM Linux快速启动详细设计
  8. “汽车人”眼中的网络安全---关于AUTOSAR E2E及测试开发实践
  9. 下载d2-admin
  10. 滑动窗口滤波 c语言,关于中值滤波算法,以及C语言实现