JavaScript两个变量交换值的实现方法


Posted in Javascript onMarch 01, 2017

概要

本文主要描述,如何不使用中间值,将两个变量的值进行交换。

一、普通做法

var a = 1,
 b = 2,
 tmp;
tmp = a;
a = b;
b = tmp;

普通的做法就是声明多一个临时变量tmp,进行数据交换过程中的缓存。这样的做法直观,易懂。但是,会增加内存的使用。

二、算术运算

var a = 1,
 b = 2;
a = a + b; // a = 3, b = 2
b = a - b; // a = 3, b = 1
a = a - b; // a = 2, b = 1

通过算术运算过程中的技巧,可以巧妙地将两个值进行互换。但是,有个缺点就是变量数据溢出。因为JavaScript能存储数字的精度范围是 -253 到 253。所以,加法运算,会存在溢出的问题。

三、异或运算

var a = 1, // 二进制:0001
 b = 2; // 二进制:0010
a = a ^ b; // 计算结果:a = 0011, b = 0010
b = a ^ b; // 计算结果:a = 0011, b = 0001
a = a ^ b; // 计算结果:a = 0010, b = 0001

本题巧用位运算的技巧,利用 a ^ b ^ b == a 的特点,进行数值交换,避免了使用算术运算带来的弊端,不会发生溢出问题。

四、ES6的解构

let a = 1,
 b = 2;
[a, b] = [b, a];

用解构的语法特性,一次性解决,简单暴力,哈哈哈~

更重要的一点:解构语法还适用于其他类型的变量进行互换。所以,用解构可以很easy地进行互换。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
数组Array进行原型prototype扩展后带来的for in遍历问题
Feb 07 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
Oct 11 Javascript
关于删除时的提示处理(确定删除吗)
Nov 03 Javascript
js对象转json数组的简单实现案例
Feb 28 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
js中用cssText设置css样式的简单方法
Sep 19 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
Oct 10 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
Apr 24 Javascript
vue树形结构获取键值的方法示例
Jun 21 Javascript
layer插件select选中默认值的方法
Aug 14 Javascript
微信小程序与公众号卡券/会员打通的问题
Jul 25 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
js实现仿购物车加减效果
Mar 01 #Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 #Javascript
js实现拖拽功能
Mar 01 #Javascript
js实现下拉菜单效果
Mar 01 #Javascript
JS实现复制功能
Mar 01 #Javascript
node.js利用redis数据库缓存数据的方法
Mar 01 #Javascript
JS三目运算(三元运算)方法详解
Mar 01 #Javascript
You might like
第四节--构造函数和析构函数
2006/11/16 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
thinkphp分页实现效果
2016/10/13 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
python实现的一个p2p文件传输实例
2014/06/04 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
车间调度岗位职责
2013/11/30 职场文书
电子商务个人自荐信
2013/12/12 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
大学生求职计划书
2014/04/30 职场文书
焦裕禄精神心得体会
2014/09/02 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python