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 相关文章推荐
JQuery里选择超链接的实现代码
May 22 Javascript
JQuery插件Style定制化方法的分析与比较
May 03 Javascript
javascript学习笔记(十一) 正则表达式介绍
Jun 20 Javascript
js中document.write的那点事
Dec 12 Javascript
不定义JQuery插件 不要说会JQuery
Mar 07 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
Jun 28 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 jQuery
javascript 判断用户有没有操作页面
Oct 17 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
VUE组件中的 Drawer 抽屉实现代码
Aug 06 Javascript
Vue程序化的事件监听器(实例方案详解)
Jan 07 Javascript
JavaScript实现贪吃蛇游戏
Jun 16 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
php通用防注入程序 推荐
2011/02/26 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
Python小进度条显示代码
2019/03/05 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
python实现经典排序算法的示例代码
2021/02/07 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
Delphi笔试题
2016/11/14 面试题
探亲邀请信范文
2014/01/30 职场文书
全神贯注教学反思
2014/02/03 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
元旦寄语大全
2014/04/10 职场文书
Linux中sftp常用命令整理
2022/06/28 Servers