前言

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

var a = 123;
var b = 456;

交换变量值方案一

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

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

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

交换变量值方案二

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

比如这个

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

让a先变成a与b的‘和'(也可以换成a和b的差,一样的) ,‘和'减去b巧妙的得到了a的变量值赋予b ,再通过‘和'减去a的值得到了b的值赋予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的解构赋值语法,它允许我们提取数组和对象的值,对变量进行赋值,不过我现在测试用的chrome浏览器已经实现了

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

转载于:https://www.cnblogs.com/qdog/p/6882079.html

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

  1. 不用额外变量交换两个整数的值

    题目 如何不用任何额外变量交换两个整数的值 基本思路 如果给定整数a和b使用如下三行代码即可交换a和b的值: a = a ^ b b = a ^ b a = a ^ b 如何理解这三行代码的具体功能呢 ...

  2. php比较两个变量的值_总结PHP不用第三个变量交换两个变量的值的几种方法

    "PHP不用第三个变量交换两个变量的值"这个题看到过好多次了,看来面试确实喜欢考这道题.今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充. 有些仅适用于字符串,方 ...

  3. C++不借助第三变量交换两个变量的值

    C++不借助第三变量交换两个变量的值 源代码: #include<iostream> using namespace std; int main(){int x,y;cout<< ...

  4. PHP中不用第三个变量交换两个变量的值

    相信大家在PHP面试或者学习中经常会遇到这个问题就是"不用第三个变量来交换两个变量的值",今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个 ...

  5. 不使用第三变量交换两个变量的值

    在 Java 中,经常会需要交换两个变量的值,我们一般是使用第三变量完成,比如 temp = a; a = b; b = temp; 这样的写法确实能达成目标,但因此而引入了第三变量,对资源的消耗增加 ...

  6. 不允许创建临时变量交换两个变量的内容

    在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量.如果在没有临时变量的情况下,该如何做呢? 方法一:C语言提供的异或运算就可以实现这样的操作.异或运算符"^"也称&qu ...

  7. 不用引入第三变量交换两个变量的值

    前几天发现了一个问题:有人告诉我,要进行变量交换,就必须引入第三变量! 假设我们要交换a和b变量的值,如果写成 int a=5,b=10; a=b; b=a; 那么结果就是两个都是10,理由不言而喻. ...

  8. 不借助第三方变量交换两个变量的值(多种方法)

    转载自:https://blog.csdn.net/kangkermit/article/details/21371159 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码 ...

  9. 不使用第三个变量交换两个变量的值

    小结一下: 给出两个变量:var a = 1, b = 2; 方法一: a = a + b; b = a - b; a = a - b; a, b 的值已经交换. 方法二: a = a ^ b; b ...

  10. 不用临时变量交换两个变量的值

    在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量. 类似于: temp=a;a=b;b=temp; 这样的语句,如果在没有临时变量的情况下,该如何做呢? 网络上的人们给出了两种方法: 一. ...

最新文章

  1. idea的优秀博客推荐
  2. 编译-C++支持iOS静态库的脚本学习
  3. java and asp.net
  4. css 中的若干心得
  5. 设计模式-策略模式和工厂模式结合使用
  6. 10个可以快速用Python进行数据分析的小技巧
  7. LaTeX双栏模板插入通栏公式(跨栏插图)
  8. spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用
  9. 每天看了哪些技术点,都记录在该文章下面,时常回过头来看看。
  10. python 干什么工作具有明显优势-科多大数据告诉你Python为什么这么牛?学习python有什么优势?...
  11. OpenGL基础28:模型
  12. Codeforces Round #347 (Div.2)_A. Complicated GCD
  13. php字符串怎么判断是否相等,php判断两个字符串是否相等
  14. Tomcat配置虚拟路径使上传文件和服务器分离及上传文件
  15. 暗黑3服务器维护时间多久,暗黑3亚服维护近24小时 将封10万账号
  16. HeadFirst设计模式部分源码
  17. 漫谈软件架构设计系列(一):可用性设计
  18. win7系统如何一键清理系统垃圾【系统天地】
  19. 世界最快的超级计算机 神威太湖之光,揭秘全国产世界最快超级计算机“神威·太湖之光”(组图)...
  20. 拼手气红包算法_二倍均值法

热门文章

  1. JAVA数据类型和运算符2
  2. git commit后,如何撤销commit
  3. 区块链 以太坊 智能合约 如何销毁 废弃 selfdestruct
  4. 设计佣金问题的java程序_三角形、nextday、佣金问题实验报告.doc
  5. 关于getline的细节
  6. TPS,QPS,RT,PV,UV,IV 含义
  7. blackfriday markdown的自动换行 go lang 正则替换字符串时遇到的坑,转义解析其中的 $1 $name 等
  8. Odoo(OpenErp) 收藏夹(私藏)
  9. SpingMVC 注解@RequestMapping、@SuppressWarnings、@Scheduled 定时器
  10. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_15-webpack研究-webpack-dev-server-程序调试...