JavaScript两个变量交换值(不使用临时变量)
概要
本文主要描述,如何不使用中间值,将两个变量的值进行交换。
前三种只适用于number类型的数值交换,第四和第五种适合其他类型。 一、普通做法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地进行互换。 五、利用数组特性进行交换var a = 1, b = 2; a = [a, b]; b = a[0]; a = a[1];
重磅推荐开源中文版设计模式,通俗易懂文章首发于微信公众号GitHub黑板报,欢迎大家关注。打开微信,使用搜一搜,搜索GitHub黑板报,即可关注。大家好,我是章鱼猫。今天给大家推荐的开源项目是Designpatter
win7精简版中电脑显示器屏幕亮度怎么调的方法有不少深度技术用户都不知道电脑屏幕亮度如何调整,这是一个非常重要的问题。电脑屏幕的亮度不仅关系到电脑的节能和使用寿命,而且对我们的眼睛也有很大的影响。很多游戏迷,上班族或学生,整天
车内空气无烦恼Teqoya得康氧车载负离子净化发生器上手体验前言大家好,我是小猴。熟悉汽车的小伙伴近一定知道新车买回来之后都会有很大的味道。而中高档品牌汽车都会多一项选配功能负离子净化发生器。尤其大家在各大旗舰系列车型上都能够选配这一功能。
开源基于Python3和Keras2(TensorFlow后端)人脸表情识别系统一开源项目简介使用卷积神经网络构建整个系统,在尝试了GaborLBP等传统人脸特征提取方式基础上,深度模型效果显著。在FER2013JAFFE和CK三个表情识别数据集上进行模型评估
开源社区团购直播秒杀分销拼团砍价群接龙多商户小程序一开源项目简介开源社区团购微商城小程序,直播,秒杀,分销,拼团,砍价,群接龙,多商户小程序。系统采用电商专用Yii2框架php7。2,后台采用elementvue。js开发,前后端
国家开始整顿算法推荐了文章首发于微信公众号非著名程序员,欢迎大家关注。大家好,我是校长。前天,看到一条新闻,国家正准备出台政策,整顿算法推荐了。大概内容如下国家互联网信息办公室27日就互联网信息服务算法
简单快乐相伴,记录与大唐的日常这个颜值真的是要爆棚了,前脸非常有冲击力,而且全新的比亚迪唐最突出的地方就是车灯了,在外观方面确实是很下功夫。后面这个贯穿式尾灯晚上真的是很漂亮,这个车漆也是非常厚的,那一次我都蹭
机不可失,时不再来文章首发于微信公众号涩郎,欢迎大家关注。大家好,我是涩郎,一名知识挖掘师兼知识布道师。周末了,本周我在读书和学习的过程当中,又有了一些新的思考和顿悟,希望我自己在读书和学习过程当中
牛逼,微软又干了一件好事文章首发于微信公众号非著名程序员,欢迎大家关注。大家好,我是校长。GitHub被微软收购之后,又更新一个牛逼功能。我感觉GitHub被微软收购之后,开源之路走得真的是越来越好了。这
收藏癖就是一种认知阑尾文章首发于微信公众号涩郎,欢迎大家关注。大家好,我是涩郎,一名知识挖掘师兼知识布道师。今天我们来聊一聊收藏癖这件事,其实,收藏癖就是一种认知阑尾。松鼠症我们先讲一个故事吧,先从一个
成功即使不能复制,其实也可以迁移文章首发于微信公众号涩郎,欢迎大家关注。大家好,我是涩郎,一名知识挖掘师兼知识布道师。今天是周六,跟大家聊一聊心里话吧,是最近的一点感慨。大家都知道,我写公众号已经坚持写了8年了,