麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

JavaScript交換兩個變量值的七種解決方案

2019-11-19 18:44:48
字體:
來源:轉載
供稿:網友

前言

這篇文章總結了七種辦法來交換a和b的變量值

var a = 123;var b = 456;

交換變量值方案一

最最最簡單的辦法就是使用一個臨時變量了,不過使用臨時變量的方法實在是太low了

var t;t = a;a = b;b = t;

首先把a的值存儲到臨時變量中,然后b賦值給a,最后拿出臨時變量中的a值賦給b,這個辦法是最基本的了

交換變量值方案二

下面的方案都不會有臨時變量,我總結了一下,其實不使用臨時變量的思路都是讓其中一個變量變成一個a和b都有關系的值,這樣可以先改變另一個變量值, 最后改變原修改的變量值

比如這個

a += b;b = a - b;a -= b;

讓a先變成a與b的‘和'(也可以換成a和b的差,一樣的) ,‘和'減去b巧妙的得到了a的變量值賦予b ,再通過‘和'減去a的值得到了b的值賦予a,或者是下面的變式(差的形式)

a -= b;b = a + b;a = b - a;

但是感覺和的形式更容易理解

交換變量值方案三

這種方法對于第一次學習JavaScript的同學來說可能不了解,因為我們JavaScript很少會用到位操作,這是我在以前看算法競賽書的時候學來的,通過底層位運算來進行交換變量值,也是上面的方案演化來的

a ^= b;b ^= a;a ^= b;

了解一下吧,C++甚至可以a^=b^=a^=b來完成任務,但我發現JavaScript不可以

不過我們可以這樣

a = (b^=a^=b)^a;

交換變量值方案四

把a先變成了一個對象,這個對象保存著應該交換后的鍵值對,最后賦值搞定

a = {a:b,b:a};b = a.b;a = a.a;

交換變量值方案五

和上面的方法很像,只不過對象換成了數組

a = [a,b];b = a[0];a = a[1];

交換變量值方案六

這個辦法十分的巧妙,不是我想出來的,想出來的人一定是大神,除非他是托夢想出來的,簡單粗暴一行代碼交換了a和b的變量值

a = [b,b=a][0];

根據運算符優先級,首先執行b=a,此時的b直接得到了a的變量值,然后一步數組索引讓a得到了b的值(簡直不能再厲害)

交換變量值方案七

最后我的方案是利用了ES6的解構賦值語法,它允許我們提取數組和對象的值,對變量進行賦值,不過我現在測試用的chrome瀏覽器已經實現了

[a,b] = [b,a];

可以看到解構賦值語法讓我們的交換變量值變得超級簡單,這個解構賦值語法要是講的話要講很多不是今天的重點,以后會在再總結現在就不講了

總結

本文提到了這么多交換變量值的方法,不知道還有沒有其他辦法,雖然它是一個無關緊要的問題,不過可以練一練我們的腦洞。希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91av亚洲| 日韩精品一二三 | 国产美女视频免费 | 免费一级a毛片免费观看 | 在线视频 欧美日韩 | 55夜色66夜色国产精品视频 | 免费看欧美一级特黄a大片 久久免费视频一区二区三区 | 手机av免费电影 | 国产午夜精品一区二区三区在线观看 | 亚洲午夜久久久精品一区二区三区 | 黄色av免费电影 | 77成人影院 | 久久久久久久久久性 | 澳门一级淫片免费视频 | 国产青草视频在线观看 | 羞羞视频在线免费 | 日本最新免费二区三区 | 日本免费aaa观看 | 韩国精品视频在线观看 | 国产精品av久久久久久久久久 | 国产成年人网站 | 福利免费在线 | 欧美精品一区二区三区久久久 | 欧美一级毛片欧美一级成人毛片 | 天天透天天狠天天爱综合97 | 精品亚洲二区 | 中文字幕在线视频网站 | jizzjizz中国少妇中文 | 国产成人自拍小视频 | 国产精品中文在线 | 4p嗯啊巨肉寝室调教男男视频 | 国产精品久久久久久久久岛 | 国产精品成人一区二区三区吃奶 | 黄色av一区二区三区 | 视频www | 在线影院av | av日韩一区二区三区 | 在线看免费观看日本 | 久久久www成人免费毛片 | 国产在线精品91 | 99国产精品国产免费观看 |