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 和 CSS 实现脚注(Footnote)效果
Sep 09 Javascript
SeaJS入门教程系列之使用SeaJS(二)
Mar 03 Javascript
js单词形式的运算符
May 06 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
Aug 15 Javascript
jQuery实现的图文高亮滚动切换特效实例
Aug 10 Javascript
原生js页面滚动延迟加载图片
Dec 20 Javascript
使用Javascript实现选择下拉菜单互移并排序
Feb 23 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
详解Node.js实现301、302重定向服务
Apr 07 Javascript
JavaScript实现的商品抢购倒计时功能示例
Apr 17 Javascript
详解如何在vue项目中引入elementUI组件
Feb 11 Javascript
JavaScript经典案例之简易计算器
Aug 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
中国收音机工业发展史
2021/03/02 无线电
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
php修改NetBeans默认字体的大小
2013/07/02 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python获取linux主机ip的简单实现方法
2016/04/18 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
Python如何读写二进制数组数据
2020/08/01 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
幼儿园教师奖惩制度
2014/02/01 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
土木工程专业推荐信
2014/02/19 职场文书
小学生期末评语大全
2014/04/21 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书