美文网首页
JS中变量交换

JS中变量交换

作者: foolgry | 来源:发表于2016-11-19 17:35 被阅读0次

本篇主要说的是JS变量交换之中的数字交换

数字交换可能是这里面方法最为丰富的一种了,因为可以用数学计算的方法来做,若是字符串、对象则不可以。

借助接三方变量

这大概是最直观的方法了。不过,这种方法又分为好几种形式。直接哪一个例子来说。

var a=1,b=2;

交换a,b的值。

var a = 1,
    b = 2;
    

1.借助变量temp来交换a,b的值,最常见的一种,不用多说。


var temp = a;
a = b;
b = temp;
console.log(a);   //2
console.log(b);   //1


2.借助一个匿名数组来交换a,b的值;

根据赋值运算符的运算方向,先计算表达式右边;

[b,b = a] // 把b,a放入一个匿名数组,第二个元素把a的值赋给b;

[b,b = a][0] // 取出匿名数组第0个值即b;

a = [b,b = a][0] // 将取出的值赋给a,交换完成。


a = [ b,b = a][0];
console.log(a);   //2
console.log(b);   //1


3.同上,借助一个匿名数组来交换a,b的值,只不过是写法不同;
不同的是,该方法利用逗号运算符(,)的特性将a的值赋给了b;

在js中,[b][b=a,0]第二个[]中是一个键值,首先将a的值赋给b;

然后再进行逗号运算符的运算,最后取匿名数组[b]的第0个值赋给a,即b本身。


a = [b][b = a,0];
console.log(a);   //2
console.log(b);   //1

总结:当然还可以用显视数组或者对象交换,这些本质都是借助第三方变量,就不再多说。借助第三方变量的优点是不会出现溢出问题。

用数学计算来交换

var a = 1,
    b = 2;

1.求和,然后再求出两个变量;
缺点是存在溢出限制,一旦a+b的值超出了js中所能保存的极限,就会出错。


a += b;
b = a - b;
a -= b;
console.log(a);   //2
console.log(b);   //1

2.巧妙利用乘法。


a = b + (b = a)*0;
console.log(a);   //2
console.log(b);   //1

3.利用位运算;
不会出现溢出问题。


a ^= b;
b ^= a;//其实这一步是这样的b=b^(a^b)=b^b^a=0^a=a
a ^= b;//同样a=a^b=(a^b)^a=b;
console.log(a);   //2
console.log(b);   //1


最后娱乐一下

这是最后一种方法,大家笑笑即好。


a = 2;
b = 1;
console.log(a);   //2
console.log(b);   //1


相关文章

  • JS中变量交换

    本篇主要说的是JS变量交换之中的数字交换 数字交换可能是这里面方法最为丰富的一种了,因为可以用数学计算的方法来做,...

  • 5个 JS 解构有趣的用途

    摘要: 玩转ES6解构赋值。 原文:5个 JS 解构有趣的用途 译者:前端小智 1. 交换变量 通常交换两个变量的...

  • Python3 & 交换的底层逻辑

    Python 交换变量,可以使用中间变量的方法交换两个变量的值,例如: 但是在Python中 交换两个数的值可以有...

  • js基础知识面试题(一)

    《js变量的语法扩展》 《变量进行交换》 总结:赋值要记牢,右边给左边,顺序是颠倒 《普通数据类型》: 《简单数据...

  • js中的定义变量之①用不用var

    var 是js定义变量的意思。 由于js中的变量是弱类型的,因此js中的所有变量包括number(数字型)、str...

  • jsday01

    js 交换两个值的方法 方法一 方法二(适用于数字交换) 方法三(位运算) 什么时候值是undefined (变量...

  • 03.less中的变量,变量插值,及运算

    less中的变量 什么是变量?和js中的概念基本一样 less中定义变量的格式 less中使用变量的格式 和js一...

  • js day01

    今天所学知识 1交换变量 2交换变量2

  • js 执行上下文,作用域,变量内存管理

    js 执行上下文,作用域,变量内存管理 JS中变量的定义在内存中包括三个部分:* 变量标示(变量标示存储在内存的栈...

  • javaScript语法

    一,js的引入方式 1.将js代码放到head中 2,在body中单独引入js文件 二,注释 三,变量 概念 变量...

网友评论

      本文标题:JS中变量交换

      本文链接:https://www.haomeiwen.com/subject/kslepttx.html