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 相关文章推荐
JS定时器实例
Apr 17 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
jquery实现勾选复选框触发事件给input赋值
Feb 01 Javascript
jQuery实现自定义事件的方法
Apr 17 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
Oct 25 Javascript
浅析JS操作DOM的一些常用方法
May 13 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
vue实现循环切换动画
Oct 17 Javascript
前端插件之Bootstrap Dual Listbox使用教程
Jul 23 Javascript
javascript实现滚动条效果
Mar 24 Javascript
基于Vue实现微前端的示例代码
Apr 24 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中header和session_start前不能有输出原因分析
2013/01/11 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
Python列表计数及插入实例
2014/12/17 Python
python动态网页批量爬取
2016/02/14 Python
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
初中校园之声广播稿
2014/01/15 职场文书
蓝颜请假条
2014/04/11 职场文书
高中教师评语大全
2014/04/25 职场文书
公司捐款倡议书
2014/05/14 职场文书
人才市场接收函
2015/01/30 职场文书
教师求职简历自我评价
2015/03/10 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
学生病假条怎么写
2015/08/17 职场文书
大学学生会竞选稿
2015/11/19 职场文书
社会实践心得体会范文
2016/01/14 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
Python数据类型最全知识总结
2021/05/31 Python