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的设计模式
Nov 22 Javascript
Jquery ui css framework
Jun 28 Javascript
Jquery实现的tab效果可以指定默认显示第几页
Oct 16 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
Sep 02 Javascript
JavaScript常用函数工具集:lao-utils
Mar 01 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
Angular 4环境准备与Angular cli创建项目详解
May 27 Javascript
node.js实现微信JS-API封装接口的示例代码
Sep 06 Javascript
微信小程序模版渲染详解
Jan 26 Javascript
layui实现三级联动效果
Jul 26 Javascript
vue el-table实现行内编辑功能
Dec 11 Javascript
单线程JavaScript实现异步过程详解
May 19 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中strlen和mb_strlen的区别
2014/08/31 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
python @property的用法及含义全面解析
2018/02/01 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Pytorch之contiguous的用法
2019/12/31 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
Python类型转换的魔术方法详解
2020/12/23 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
舞蹈比赛获奖感言
2014/02/04 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
商务信函英语问候语
2015/11/10 职场文书
志愿服务心得体会
2016/01/15 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
导游词之千岛湖
2019/09/23 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python
python中validators库的使用方法详解
2022/09/23 Python