最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年12月01日 08:39:46   投稿:daisy  
最近在寫位操作的時候突然想到了這個問題,突然想總結(jié)一下,交換變量值的問題可能使我們學(xué)習(xí)編程語言接觸到的比較早的邏輯問題,小伙伴或多或少會兩種解決的方法,本文提供了七種解決的方法,下面跟著小編來一起看看吧。

前言

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

var a = 123;
var b = 456;

交換變量值方案一

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

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

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

交換變量值方案二

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

比如這個

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;

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

交換變量值方案三

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

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

了解一下吧,C++甚至可以a^=b^=a^=b來完成任務(wù),但我發(fā)現(xiàn)JavaScript不可以

不過我們可以這樣

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

交換變量值方案四

把a(bǔ)先變成了一個對象,這個對象保存著應(yīng)該交換后的鍵值對,最后賦值搞定

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

交換變量值方案五

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

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

交換變量值方案六

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

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

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

交換變量值方案七

最后我的方案是利用了ES6的解構(gòu)賦值語法,它允許我們提取數(shù)組和對象的值,對變量進(jìn)行賦值,不過我現(xiàn)在測試用的chrome瀏覽器已經(jīng)實現(xiàn)了

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

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

總結(jié)

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

相關(guān)文章

  • JS如何實現(xiàn)文本框隨文本的長度而增長

    JS如何實現(xiàn)文本框隨文本的長度而增長

    這篇文章主要介紹了JS如何實現(xiàn)文本框隨文本的長度而增長的方法,具有一定借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 動態(tài)加載script文件的兩種方法

    動態(tài)加載script文件的兩種方法

    第一種就是利用ajax方式,第二種是,動態(tài)創(chuàng)建一個script標(biāo)簽,設(shè)置其src屬性,通過把script標(biāo)簽插入到頁面head來加載js,感興趣的朋友可以了解下
    2013-08-08
  • javascript中自定義對象的屬性方法分享

    javascript中自定義對象的屬性方法分享

    這篇文章介紹了在javascript中自定義對象的屬性方法,有需要的朋友可以參考一下
    2013-07-07
  • 微信小程序網(wǎng)絡(luò)請求封裝示例

    微信小程序網(wǎng)絡(luò)請求封裝示例

    這篇文章主要介紹了微信小程序網(wǎng)絡(luò)請求封裝示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • layui監(jiān)聽工具欄的實例(操作列表按鈕)

    layui監(jiān)聽工具欄的實例(操作列表按鈕)

    今天小編就為大家分享一篇layui監(jiān)聽工具欄的實例(操作列表按鈕),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 詳解JavaScript實現(xiàn)繼承的五種經(jīng)典方式(附圖解)

    詳解JavaScript實現(xiàn)繼承的五種經(jīng)典方式(附圖解)

    JavaScript中的繼承是一種機(jī)制,通過它可以創(chuàng)建一個對象,該對象可以享有另一個對象的屬性和方法,本文將詳細(xì)的為大家介紹實現(xiàn)繼承的五種經(jīng)典方式,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • 微信小程序開發(fā)之轉(zhuǎn)發(fā)分享功能

    微信小程序開發(fā)之轉(zhuǎn)發(fā)分享功能

    這篇文章主要介紹了微信小程序開發(fā)之轉(zhuǎn)發(fā)分享功能的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 淺談JavaScript中內(nèi)存泄漏的幾種情況

    淺談JavaScript中內(nèi)存泄漏的幾種情況

    本文主要介紹了淺談JavaScript中內(nèi)存泄漏的幾種情況,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • uni-app中使用renderjs的詳細(xì)步驟講解

    uni-app中使用renderjs的詳細(xì)步驟講解

    這篇文章主要介紹了uni-app中使用renderjs的詳細(xì)步驟,RenderJS是一種可以直接運(yùn)行在視圖層(webview)中的JavaScript技術(shù),用于優(yōu)化大量DOM操作的性能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • 微信二次分享報錯invalid signature問題及解決方法

    微信二次分享報錯invalid signature問題及解決方法

    基于微信公眾號開發(fā)的h5頁面(使用jssdk接口),由用戶A分享給用戶B,用戶B再次分享這個頁面時,不能成功分享。這篇文章主要介紹了微信二次分享報錯invalid signature問題及解決方法,需要的朋友可以參考下
    2019-04-04

最新評論

浦江县| 大荔县| 自贡市| 云林县| 巧家县| 江口县| 胶南市| 永嘉县| 当涂县| 新平| 中方县| 武胜县| 齐河县| 济源市| 武乡县| 白玉县| 乌兰浩特市| 南康市| 青岛市| 民和| 湖南省| 甘谷县| 思南县| 彰化县| 从江县| 资溪县| 股票| 南部县| 鄂温| 五家渠市| 瑞丽市| 海淀区| 甘南县| 西城区| 高碑店市| 宁波市| 舟山市| 潜山县| 依安县| 伊春市| 建平县|