js两个变量互换值,你了解多少

js两个变量交换值

这个问题看似很基础,但是有很多的实现方式,你知道的有多少呢,网上也有很多的方法,下面就来总结一下

  • 中间变量(临时变量)
  临时变量其实很好理解,通过一个中间变量进行交换值
  var strA = "a";
  var strB = "b";
  var strC;//中间变量
  # 开始
  strC = strB;//strC值是b
  strB = strA;//此时strB已经变成strA
  strA = strC;//让strA赋值strB的值
  • 使用加减(针对数字)
  var a=2,b=3;
  加法算:
  a +=b;//a=5,b=3
  b =a-b;//b=2
  a =a-b;//b=3

  减法算:
  a +=b;//a=5
  b = a-b;//b=2;
  a -=b;//a=3
  两种方法都需要两个值相加,然后做对于的加减算
  • 对象和数组
  var a="1",b="2";
  对象的方法:
  先把a变成一个对象,即a={a:b,b:a}
  b=a.a;//1
  a=a.b;//2
  数组的方法:
  数组其实和对象的思想差不多
  a=[a,b];
  b=a[0];
  a=b[1];

  • 万能法(运用运算符优先级)
  公式:a=[b,b=a][0]
  var a="1",b="code";
  a=[b,b=a][0];//这样就成功了
  console.log(a,b);//code  1
  • ES6的解构赋值

    什么是解构赋值?
    解构赋值允许你使用类似数组或对象字面量的语法将数组和对象的属性赋给各种变量。这种赋值语法极度简洁,同时还比传统的属性访问方法更为清晰。

  数组与迭代器的解构
  语法:[ variable1, variable2, ..., variableN ] = array;
  这将为variable1到variableN的变量赋予数组中相应元素项的值

可以去看看解构的赋值:http://es6.ruanyifeng.com/#docs/destructuring

  let a = "one",b = "two";
  [a, b] = [b, a];
  console.log(a, b);//two one
  • 利用try catch交换
var a=1,b=2;
a=(function(){;
    try{return b}
    finally{b=a}}
)();
或字符串
var a = "aaa",
    b = "bbb";
a = (function() {;
    try {
        return b
    } finally {
        b = a
    }
})();
console.log(a, b);

  • 异或运算(针对数字)
  var a = 1; // 二进制:0001
  var b = 2; // 二进制:0010
  a = a ^ b; // 计算结果:a = 0011, b = 0010
  b = a ^ b; // 计算结果:a = 0011, b = 0001
  a = a ^ b; // 计算结果:a = 0010, b = 0001
  自己可以动手试一下

  例子:
  var a = 0;
  var b = 1;
  a = (b = (a ^= b) ^ b) ^ a;
  console.log(a,b)

  例子:
  var a = 0; // 二进制:0001
  var b = 1; // 二进制:0010
  a ^=b;
  b ^=a;
  a ^=b;
  console.log(a,b)
  • 数组的两个值的交换
var arr = [item0,item1,...,itemN];
//最初使用这段代码来交换第0个和第K(k<N)个元素
arr[0] = arr.splice(k, 1, arr[0])[0];

var arr = [1,2,3,"aaa","bbb","ccc"];
arr[0] = arr.splice(3, 1, arr[0])[0];
console.log(arr.toString())//aaa,2,3,1,bbb,ccc

我的blog:codehtml

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 3,024评论 3 37
  • 数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destru...
    呼呼哥阅读 429评论 0 3
  • 本文通过学习阮一峰的博客,外加自己的理解,整理了一下我对js变量的解构赋值的理解。 数组的解构赋值 对象的解构赋值...
    宋乐怡阅读 466评论 0 2
  • 1.数组的解构赋值 2.对象的解构赋值 3.字符串的解构赋值 4.数值和布尔值的解构赋值 5.函数参数的解构赋值 ...
    卞卞村长L阅读 916评论 0 0
  • 作业2选1: 你希望通过这周《习惯力》的学习,得到哪些方面的提高呢?回忆一下,自己在工作和生活中需要改变的坏习惯是...
    拆书的阿福阅读 166评论 0 0