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

JavaScript兩個(gè)變量交換值的實(shí)現(xiàn)方法

 更新時(shí)間:2017年03月01日 10:57:56   作者:wall''''s  
本文主要介紹了JavaScript兩個(gè)變量交換值(不使用臨時(shí)變量)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧

概要

本文主要描述,如何不使用中間值,將兩個(gè)變量的值進(jìn)行交換。

一、普通做法

var a = 1,
 b = 2,
 tmp;
tmp = a;
a = b;
b = tmp;

普通的做法就是聲明多一個(gè)臨時(shí)變量tmp,進(jìn)行數(shù)據(jù)交換過程中的緩存。這樣的做法直觀,易懂。但是,會(huì)增加內(nèi)存的使用。

二、算術(shù)運(yùn)算

var a = 1,
 b = 2;
a = a + b; // a = 3, b = 2
b = a - b; // a = 3, b = 1
a = a - b; // a = 2, b = 1

通過算術(shù)運(yùn)算過程中的技巧,可以巧妙地將兩個(gè)值進(jìn)行互換。但是,有個(gè)缺點(diǎn)就是變量數(shù)據(jù)溢出。因?yàn)镴avaScript能存儲(chǔ)數(shù)字的精度范圍是 -253 到 253。所以,加法運(yùn)算,會(huì)存在溢出的問題。

三、異或運(yùn)算

var a = 1, // 二進(jìn)制:0001
 b = 2; // 二進(jìn)制:0010
a = a ^ b; // 計(jì)算結(jié)果:a = 0011, b = 0010
b = a ^ b; // 計(jì)算結(jié)果:a = 0011, b = 0001
a = a ^ b; // 計(jì)算結(jié)果:a = 0010, b = 0001

本題巧用位運(yùn)算的技巧,利用 a ^ b ^ b == a 的特點(diǎn),進(jìn)行數(shù)值交換,避免了使用算術(shù)運(yùn)算帶來(lái)的弊端,不會(huì)發(fā)生溢出問題。

四、ES6的解構(gòu)

let a = 1,
 b = 2;
[a, b] = [b, a];

用解構(gòu)的語(yǔ)法特性,一次性解決,簡(jiǎn)單暴力,哈哈哈~

更重要的一點(diǎn):解構(gòu)語(yǔ)法還適用于其他類型的變量進(jìn)行互換。所以,用解構(gòu)可以很easy地進(jìn)行互換。

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • js單線程的本質(zhì) Event Loop解析

    js單線程的本質(zhì) Event Loop解析

    這篇文章主要介紹了js單線程的本質(zhì) Event Loop解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • JavaScript利用fetch實(shí)現(xiàn)異步請(qǐng)求的方法實(shí)例

    JavaScript利用fetch實(shí)現(xiàn)異步請(qǐng)求的方法實(shí)例

    傳遞信息到服務(wù)器,從服務(wù)器獲取信息,是前端發(fā)展的重中之重,尤其是現(xiàn)在前后端分離的大前提下,前后端的數(shù)據(jù)交互是前端的必修科目了,下面這篇文章主要給大家介紹了關(guān)于JavaScript利用fetch實(shí)現(xiàn)異步請(qǐng)求的相關(guān)資料,需要的朋友可以參考借鑒。
    2017-07-07
  • knockoutjs動(dòng)態(tài)加載外部的file作為component中的template數(shù)據(jù)源的實(shí)現(xiàn)方法

    knockoutjs動(dòng)態(tài)加載外部的file作為component中的template數(shù)據(jù)源的實(shí)現(xiàn)方法

    Knockoutjs 的Components 是一種自定義的組件,它以一種強(qiáng)大、簡(jiǎn)介的方式將你自己的ui代碼組織成一種單獨(dú)的、可重用的模塊。接下來(lái)通過本文給大家介紹knockoutjs動(dòng)態(tài)加載外部的file作為component中的template數(shù)據(jù)源的實(shí)現(xiàn)方法,一起看看吧
    2016-09-09
  • layui數(shù)據(jù)表格重載實(shí)現(xiàn)往后臺(tái)傳參

    layui數(shù)據(jù)表格重載實(shí)現(xiàn)往后臺(tái)傳參

    今天小編就為大家分享一篇layui數(shù)據(jù)表格重載實(shí)現(xiàn)往后臺(tái)傳參,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-11-11
  • 淺析JS動(dòng)態(tài)創(chuàng)建元素【兩種方法】

    淺析JS動(dòng)態(tài)創(chuàng)建元素【兩種方法】

    下面小編就為大家?guī)?lái)一篇淺析JS動(dòng)態(tài)創(chuàng)建元素【兩種方法】。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家。一起跟隨小編過來(lái)看看吧
    2016-04-04
  • 解決layer彈出層的內(nèi)容頁(yè)點(diǎn)擊按鈕跳轉(zhuǎn)到新的頁(yè)面問題

    解決layer彈出層的內(nèi)容頁(yè)點(diǎn)擊按鈕跳轉(zhuǎn)到新的頁(yè)面問題

    今天小編就為大家分享一篇解決layer彈出層的內(nèi)容頁(yè)點(diǎn)擊按鈕跳轉(zhuǎn)到新的頁(yè)面問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-09-09
  • 如何在現(xiàn)代JavaScript中編寫異步任務(wù)

    如何在現(xiàn)代JavaScript中編寫異步任務(wù)

    這篇文章主要給大家介紹了關(guān)于如何在現(xiàn)代JavaScript中編寫異步任務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • javascript實(shí)現(xiàn)點(diǎn)擊圖片切換

    javascript實(shí)現(xiàn)點(diǎn)擊圖片切換

    這篇文章主要介紹了javascript實(shí)現(xiàn)點(diǎn)擊圖片切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 深入淺出理解JavaScript閉包的功能與用法

    深入淺出理解JavaScript閉包的功能與用法

    這篇文章主要介紹了深入淺出理解JavaScript閉包的功能與用法,結(jié)合實(shí)例形式從變量、函數(shù)的內(nèi)部屬性與作用域鏈分析了javascript閉包的相關(guān)概念、功能與使用技巧,需要的朋友可以參考下
    2018-08-08
  • JavaScript利用正則表達(dá)式去除日期中的-

    JavaScript利用正則表達(dá)式去除日期中的-

    頁(yè)面的日期格式是:YYYY-MM-DD,而數(shù)據(jù)庫(kù)中的日期格式是:YYYYMMDD,兩者之間需要轉(zhuǎn)換一下,本文利用正則表達(dá)式去掉-
    2014-06-06

最新評(píng)論

砀山县| 宝丰县| 克什克腾旗| 兴仁县| 鄂托克旗| 麦盖提县| 永德县| 松江区| 鹤山市| 彩票| 濮阳县| 昌宁县| 大洼县| 贵港市| 昭通市| 乌苏市| 安顺市| 丹凤县| 西畴县| 连南| 色达县| 平武县| 奉新县| 富锦市| 乐至县| 雷山县| 鄢陵县| 贵定县| 澎湖县| 西峡县| 康保县| 徐州市| 新巴尔虎右旗| 穆棱市| 张家界市| 嘉鱼县| 桂阳县| 百色市| 张家界市| 镶黄旗| 囊谦县|