JavaScript两个变量交换值的实现方法
概要
本文主要描述,如何不使用中间值,将两个变量的值进行交换。
一、普通做法
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 变量命名规则
JScript 是一种区分大小写的语言. 第一个字符必须是一个 ASCII 字母(大小写均可),或一个下划线(_).注意第一个字符不能是数字. 后续的字符必须是字母.数字或下划线. 变量名称一定不能是 保留字. 下面给出合法变量名称的一些示例: _pagecount Part9 Number_Items 下面给出无效变量名称的一些示例: 99Balloons // 不能以数字开头.Smith&Wesson // "与"符号(&)字符用于变量名称是无效的.
-
js中开关变量使用实例
效果图: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> *{ margin: 0; padding: 0; font-family: "微软雅黑"; } #wrap{ width: 400px; height: 500px; border: 1px solid #c
-
js判断变量是否空值的代码
复制代码 代码如下: function empty(v){ switch (typeof v){ case 'undefined' : return true; case 'string' : if(trim(v).length == 0) return true; break; case 'boolean' : if(!v) return true; break; case 'number' : if(0 === v) return true; break; case 'object' : i
-
基于JavaScript 声明全局变量的三种方式详解
JS中声明全局变量主要分为显式声明或者隐式声明下面分别介绍. 声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量.该方式即为显式声明详细如下: <script> var test = 5;//全局变量 function a(){ var a = 3;//局部变量 alert(a); } function b(){ alert(test); } //a();//调用a方法,那么方法里面的内容才会执行 //b(
-
js变量以及其作用域详解
一.变量的类型 Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量.例如: 复制代码 代码如下: i=100;//Number类型 i="variable";//String类型 i={x:4};//Object类型 i=[1,2,3];//Array类型 JS的这种特性虽然让我们的编码更加灵活,但也带来了一个弊端,不利于Debug,编译器的弱检测让我们维护冗长的
-
AngularJS实现根据变量改变动态加载模板的方法
本文实例讲述了AngularJS实现根据变量改变动态加载模板的方法.分享给大家供大家参考,具体如下: directive: return { restrict: 'E', replace: true, templateUrl: 'app/view/order.html', link: function (scope, element, attrs) { scope.Type = attrs.Type; } }; 模板: <div ng-switch on="item.Type"&
-
JS判断变量是否为空判断是否null
/** * 判断是否null * @param data */ function isNull(data){ return (data == "" || data == undefined || data == null) ? "暂无" : data; }
-
js判断变量是否未定义的代码
例如: if(!myVar01)alert("发生错误"); // 该代码直接发生异常,因为变量myVar01没有申明 if("undefined" == typeof myVar01)alert("发生错误"); // 这样写才不至于发生异常 而: var myVar01; if(undefined == myVar01)alert("发生错误"); // 该代码会正确运行 if("undefined"
-
JS中的this变量的使用介绍
JavaScript中this的使用 在JavaScript中this变量是一个令人难以摸清的关键字,this可谓是非常强大,充分了解this的相关知识有助于我们在编写面向对象的JavaScript程序时能够游刃有余. 对于this变量最要的是能够理清this所引用的对象到底是哪一个,也许很多资料上都有自己的解释,但有些概念讲的偏繁杂.而我的理解是:首先分析this所在的函数是当做哪个对象的方法调用的,则该对象就是this所引用的对象. 示例一. 复制代码 代码如下: var obj = {};
-
js 多种变量定义(对象直接量,数组直接量和函数直接量)
对象直接量创建一个对象: 复制代码 代码如下: var obj = {x:[1,2],y:23}; 代码跟下面是一样的. 复制代码 代码如下: var obj=new Object(); obj.x=new Array(1,2); obj.y=23; 测试: 复制代码 代码如下: for(var i in obj) alert(obj[i]); 函数直接量:它是一个表达式而不是语句. 复制代码 代码如下: (function(){})() 如下例: 复制代码 代码如下: (function(){
随机推荐
- SQLite教程(十四):C语言编程实例代码(2)
- 网页播放器的参数含义 Windows Media Player 网页播放器 参数含义
- 浅析java 循序与二元搜索算法
- 基于Java中字符串内存位置详解
- asp.net下将Excel转成XML档的实现代码
- js实现图片加载淡入淡出效果
- BBS(php & mysql)完整版(五)
- php设计模式 Interpreter(解释器模式)
- PHP完整的日历类(CLASS)
- PHP Yii框架之表单验证规则大全
- nodejs操作mysql实现增删改查的实例
- 我的javascript 函数链之演变
- jQuery元素的隐藏与显示实例
- 忘记Mysql密码的解决办法小结
- web前端开发JQuery常用实例代码片段(50个)
- jquery+css实现绚丽的横向二级下拉菜单-附源码下载
- javascript 流畅动画实现原理
- 私服有效防DDOS攻击的方法
- PHP获取音频文件的相关信息
- Android限时抢购倒计时实现代码