js 交换变量值的方法总汇

更新日期: 2019-04-13 阅读: 4.2k 标签: 变量

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


交换变量值方案一

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

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

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


交换变量值方案二

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

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

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

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的解构赋值语法 ,它允许我们提取数组和对象的值,对变量进行赋值 
(旧版本浏览器不能使用ES6语法)

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

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/2873

相关推荐

vue定义全局变量

VUE.js 中涉及到JS全局变量:全局变量专用模块得引入、全局变量模块挂载到Vue.prototype、使用VUEX存储状态值、使用window存储变量

let与var的区别,为什么要用let?

var是全局声明,let是块级作用的,只适用于当前代码块;var变量会发生变量提升,let则不会进行变量提升;var 会造成重复赋值,循环里的赋值可能会造成变量泄露至全局

php中的$_REQUEST超全局变量

PHP $_REQUEST是用于收集HTML表单提交的数据,PHP $_REQUEST属于PHP的超级全局变量。以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)

从.env文件中为Node.js加载环境变量

使用环境变量是配置 Node.js 程序的好方法。而且许多包或模块可以基于不同的 NODE_ENV 变量的值表现出不同的行为。存储环境变量的一种方法是将它们放在 .env 文件中。这些文件允许你指定各种环境变量及其相应的值。

在vue中实现了在样式里使用js变量的方法

在使用vue开发时,经常会封装很多的组件方便复用,那么难免就有写样式相关组件,比如需要使用时传入颜色、高度等样式参数。

理解var let const区别

JavaScript中var、let、const区别?js中let和const都是es5版本新的命名规范,在此之前定定义一个变量只能用var。我们可以把let和const看做是为了弥补var的一些不足而新设计出来的

css自定义变量_初次接触CSS变量

本文的目的主要是展示CSS变量是如何工作的。随着Web应用程序变得越来越大,CSS变得越来越大,越来越多,而且很多时候都很乱,在良好的上下文中使用CSS变量,为您提供重用和轻松更改重复出现的CSS属性的机制。

Node常用的全局变量与 Inspect 调试

在 Node 中常用的全局方法有 CommonJS、Buffer、process、console、timer 等,这些方法不需要 require引入 API 就可以直接使用。如果希望有属性或方法可以“全局使用”,那就将它挂载在 Node 的global对象上:

css变量_原生css 中变量的使用

原生css 中变量的使用,这个重要的 CSS 新功能,所有主要浏览器已经都支持了。本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大。声明变量的时候,变量名前面要加两根连词线(--),var()函数用于读取变量。

什么是解构赋值?

解构赋值给我们一种新的变量赋值方式,主要可以利用数组解构赋值和对象解构赋值。它的用途包括:交换变量值,提取函数返回值,函数参数定义,默认值设定等等,给我们编程带来便利。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!