面試官在“逗”你系列:不借助第三變量交換兩個(gè)變量值的方案你有幾種?

引言

在我們學(xué)習(xí)編程之初,就學(xué)習(xí)過變量的賦值操作,同時(shí)也學(xué)習(xí)了將一個(gè)變量的值賦值給另外一個(gè)變量。對于交換兩個(gè)變量的值,很多童鞋都有解決方案。然鵝,對于面試官提出的不借助第三變量來交換兩個(gè)變量的值蜈首,你能想到幾種解決方案呢?

如果你只知道一種方案,請你認(rèn)真看下去...
如果你知道兩種方案,那么你可以來了解更多方案了...

一、最簡單的實(shí)現(xiàn)-最初的記憶

讓我們由淺入深,來了解交換變量值的最簡單、最初的解決方案:借助于第三個(gè)變量

// 聲明變量a和b
let a = 5
let b = 4
// 1. 臨時(shí)將變量a的值賦值給變量tmp
let tmp = a
// 2. 將變量b的值賦值給a
a = b
// 3. 將變量a的值(tmp的值)賦值給b
b = tmp

console.log(a) // 4
console.log(b) // 5

so east!

二哮兰、不借助第三變量的實(shí)現(xiàn)-ES6版

面試官在聽到上面給出的解決方案后嗡午,微微一笑(腦海中閃現(xiàn)到:你以為就這么簡單)說道僻他,有其他解決方案嗎劝篷,不借助第三變量呢哈恰?

了解學(xué)習(xí)了JS ES6的數(shù)組解構(gòu)賦值的童鞋對此冷冷一笑荠医,嘴角一撇幢泼,冷酷酷地說道:也可以使用ES6的數(shù)組解構(gòu)賦值來交換變量的值。

let a = 5;
let b = 4; // 請注意此位置的分號;是一定要存在的呀

// 數(shù)組結(jié)構(gòu)賦值别厘,交換變量a,b的值
[a, b] = [b, a]

console.log(a) // 4
console.log(b) // 5

看到面試官的臉色似乎漸漸露出了滿意的神色冗懦,內(nèi)心是不是有點(diǎn)兒竊喜。
如果此刻面試官又說道,還有沒有其他的解決方案,小朋友,你是不是有許多問號?

三、不借助第三變量的實(shí)現(xiàn)-終極版本一:單純數(shù)學(xué)運(yùn)算

胡哥在這里再次強(qiáng)調(diào)誓军,這絕對不是一個(gè)考驗(yàn)“智商”的答案救巷,只是考驗(yàn)了在編程的變通能力以及經(jīng)驗(yàn)問題管怠,下面請看代碼的實(shí)現(xiàn)她肯。

let a = 5
let b = 4

// 接下來就是見證神奇的時(shí)刻籽前,來挠锥,鏡頭請對準(zhǔn)我蓖宦。

// 二者之和
a = a + b
// 二者之和 - b的值,剩余a的值賦值給變量b
b = a - b
// 此刻a還是二者之和,a - b此刻相當(dāng)于二者之和 - 變量b(a的值),那么此刻剩余的就是變量b的值阱州,賦值給a變量
a = a - b

// yes, we did!
console.log(a) // 4
console.log(b) // 5

如果此刻面試官再問出還有沒有其他的方案姻灶,此刻你會慌的一比呢曾沈,還是內(nèi)心大喊“wc”呢

四卧土、不借助第三變量的實(shí)現(xiàn)-終極版本二:位運(yùn)算符^

不要怕颤霎,兄弟們,接下來給大家來分享第四種方式,位運(yùn)算符 ^ 異或昭伸。在變量的運(yùn)算中這個(gè)操作符有什么作用呢?

異或運(yùn)算符:

是執(zhí)行位運(yùn)算的枝笨,二進(jìn)制運(yùn)算,參與變量運(yùn)算的兩個(gè)變量要轉(zhuǎn)為二進(jìn)制進(jìn)行運(yùn)算萨脑。
如果相同二進(jìn)制位的值相同悴灵,則轉(zhuǎn)為0赡鲜,否則轉(zhuǎn)為1.

那交換兩個(gè)變量的值具體代碼是如何實(shí)現(xiàn)的呢?請看大屏幕,哦,不辛臊,請往下看。

let a = 5 // 0101
let b = 4 // 0100

// 按位異或運(yùn)算
a = a ^ b // 0101 ^ 0100 ===> 0001川抡,此時(shí)a的值為1
b = a ^ b // 0001 ^ 0100 ===> 0101,此時(shí)b的值為5
a = a ^ b // 0001 ^ 0101 ===> 0100,此時(shí)a的值為4

console.log(a) // 4
console.log(b) // 5

驚不驚喜眉枕,意不意外翅萤。疮蹦。。

以上四種實(shí)現(xiàn)交換兩個(gè)變量值得方案你都掌握了嗎芳绩,如果掌握了妥色,可以對面試官反手就是一個(gè)“吊打”了。
如果你有更多的解決交換兩個(gè)變量值的方案凿可,歡迎留言交流呀枯跑!

后記

以上就是胡哥今天給大家分享的內(nèi)容纳击,喜歡的小伙伴記得點(diǎn)贊堡赔、收藏呦悉稠,關(guān)注胡哥有話說,學(xué)習(xí)前端不迷路骇陈,歡迎多多留言交流...

胡哥有話說震庭,一個(gè)有技術(shù),有情懷的胡哥你雌!現(xiàn)任京東前端攻城獅一枚器联。
胡哥有話說二汛,專注于大前端技術(shù)領(lǐng)域,分享前端系統(tǒng)架構(gòu)拨拓,框架實(shí)現(xiàn)原理肴颊,最新最高效的技術(shù)實(shí)踐!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渣磷,一起剝皮案震驚了整個(gè)濱河市婿着,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌醋界,老刑警劉巖竟宋,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異形纺,居然都是意外死亡丘侠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門逐样,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婉陷,“玉大人,你說我怎么就攤上這事官研。” “怎么了闯睹?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵戏羽,是天一觀的道長。 經(jīng)常有香客問我楼吃,道長始花,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任孩锡,我火速辦了婚禮酷宵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躬窜。我一直安慰自己浇垦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布荣挨。 她就那樣靜靜地躺著男韧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪默垄。 梳的紋絲不亂的頭發(fā)上此虑,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音口锭,去河邊找鬼朦前。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的韭寸。 我是一名探鬼主播春哨,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼棒仍!你這毒婦竟也來了悲靴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤莫其,失蹤者是張志新(化名)和其女友劉穎癞尚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乱陡,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浇揩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了憨颠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胳徽。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖爽彤,靈堂內(nèi)的尸體忽然破棺而出养盗,到底是詐尸還是另有隱情,我是刑警寧澤适篙,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布往核,位于F島的核電站,受9級特大地震影響嚷节,放射性物質(zhì)發(fā)生泄漏聂儒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一硫痰、第九天 我趴在偏房一處隱蔽的房頂上張望衩婚。 院中可真熱鬧,春花似錦效斑、人聲如沸非春。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽税娜。三九已至,卻和暖如春藏研,著一層夾襖步出監(jiān)牢的瞬間敬矩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工蠢挡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弧岳,地道東北人凳忙。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像禽炬,于是被迫代替她去往敵國和親涧卵。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容