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 相关文章推荐
JavaScript 仿关机效果的图片层
Dec 26 Javascript
js post方式传递提交的实现代码
May 31 Javascript
JS在IE下缺少标识符的错误
Jul 23 Javascript
JQuery替换DOM节点的方法
Jun 11 Javascript
浅谈Javascript线程及定时机制
Jul 02 Javascript
jQuery版AJAX简易封装代码
Sep 14 Javascript
Javascript 制作图形验证码实例详解
Dec 22 Javascript
JS奇技之利用scroll来监听resize详解
Jun 15 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
Oct 20 Javascript
用JavaScript做简易的购物车的代码示例
Oct 20 Javascript
原生JS实现记忆翻牌游戏
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
PHP一些有意思的小区别
2006/12/06 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php处理复杂xml数据示例
2016/07/11 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
用js怎么把&字符换成"&amp:"
2006/10/19 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
开发房地产协议书
2014/09/14 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
管理失职检讨书范文
2015/05/05 职场文书
教师读书活动心得体会
2016/01/14 职场文书
话题作文之诚信
2019/11/28 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
JS实现数组去重的11种方法总结
2022/04/04 Javascript
Golang 结构体数据集合
2022/04/22 Golang
MySQL 数据库范式化设计理论
2022/04/22 MySQL