美文网首页JavaScript学习笔记
JavaScript交换两个变量

JavaScript交换两个变量

作者: Allen_HD | 来源:发表于2017-11-06 16:57 被阅读0次

这篇文章总结了七种办法来交换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];

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

相关文章

  • JavaScript交换两个变量

    这篇文章总结了七种办法来交换a和b的变量值 var a = 123; var b = 456; 交换变量值方案一 ...

  • 常用的JavaScript简写技巧

    JavaScript 的简写技巧 变量声明 多个变量赋值 三元运算符 赋默认值 与运算符 (&&) 交换两个变量 ...

  • 2018-11-08

    ☞ 考查闭包 ☞ 考查同步异步 ☞ ☞ JavaScript两个变量交换值(不使用临时变量) ☞ 设置一个时间为1...

  • 如何在 JavaScript 中交换两个变量?

    过去,在 JavaScript 中交换两个变量的值需要一个中间变量在交换时存储其中一个值 尽管这种方法仍然有效,但...

  • JavaScript交换变量方法

    javascript交换变量方法 要求,交换a和b的值。 第一种: var a = 1, b = 2, num =...

  • C 语言实例12 - 交换两个数的值

    使用临时变量交换两个数的值 不使用临时变量交换两个数的值

  • Python3 & 交换的底层逻辑

    Python 交换变量,可以使用中间变量的方法交换两个变量的值,例如: 但是在Python中 交换两个数的值可以有...

  • JavaScript实现两个变量值交换

    一个经典的问题,“两个变量之间值的交换”。 1、 引入临时变量进行数据交换 引入临时变量,最最基本的方法,看着很l...

  • 交换两个基本数据类型变量的值

    交换两个基本数据类型变量的值 已知两个基本数据类型的变量a、b,要求交换两个变量的值。下面以double类型为例进...

  • 主流排序算法

    首先我们先定义一个交换2个变量的函数,这里使用 javascript 语言来写 交换遍历函数 冒泡排序 后面的大数...

网友评论

    本文标题:JavaScript交换两个变量

    本文链接:https://www.haomeiwen.com/subject/jxwyittx.html