欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript比較語義化版本號的實(shí)現(xiàn)代碼

 更新時(shí)間:2016年09月09日 10:45:50   投稿:daisy  
這篇文章先是給大家簡單的介紹了下語義化版本號,而后再用實(shí)例代碼演示語義化版本號的比較方法,有需要的朋友們可以參考借鑒。

前言

所謂“語義化版本號”,就是在版本號中體現(xiàn)出語義,或者說版本號本身是有意義的,不再是隨意給的一個(gè)數(shù)字。這個(gè)規(guī)范將版本號中每個(gè)數(shù)字的意義都做了比較嚴(yán)格的說明。當(dāng)然,其中大部分內(nèi)容還是沿用我們之前說過的業(yè)內(nèi)的約定,所以,對于有版本號意識的開發(fā)者來說,接受這個(gè)規(guī)范是很容易的。

在移動(dòng)端APP第三方開發(fā)中經(jīng)常會碰到一些因?yàn)榘姹静煌斐蒍S SDK或JS API差異或支持的問題。對于移動(dòng)前端來說,在實(shí)際第三方開發(fā)中可能會需要根據(jù)APP的版本號做一些特殊的業(yè)務(wù)邏輯處理。

語義化版本號

一般語義化版本號通常定義是這樣的:

Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]]
 
主版本號   .子版本號    [.修正版本號  [.編譯版本號 ]]

定界符一般使用.

語義化版本號比較方法

這樣我們可以做版本號比較,這里提供一個(gè)粗陋的方法:

/**
 * 版本比較 VersionCompare
 * @param {String} currVer 當(dāng)前版本.
 * @param {String} promoteVer 比較版本.
 * @return {Boolean} false 當(dāng)前版本小于比較版本返回 true.
 *
 * 使用
 * VersionCompare("6.3","5.2.5"); // false.
 * VersionCompare("6.1", "6.1"); // false.
 * VersionCompare("6.1.5", "6.2"); // true.
 */
var VersionCompare = function (currVer, promoteVer) {
 currVer = currVer || "0.0.0";
 promoteVer = promoteVer || "0.0.0";
 if (currVer == promoteVer) return false;
 var currVerArr = currVer.split(".");
 var promoteVerArr = promoteVer.split(".");
 var len = Math.max(currVerArr.length, promoteVerArr.length);
 for (var i = 0; i < len; i++) {
  var proVal = ~~promoteVerArr[i],
   curVal = ~~currVerArr[i];
  if (proVal < curVal) {
   return false;
  } else if (proVal > curVal) {
   return true;
  }
 }
 return false;
};

使用也很簡單:

VersionCompare("6.3","5.2.5"); // false.
VersionCompare("6.1", "6.1"); // false.
VersionCompare("6.1.5", "6.2"); // true.

這里需要注意的是根據(jù)我自己的業(yè)務(wù)邏輯當(dāng)前版本小于比較版本返回 true。你可以根據(jù)自己的業(yè)務(wù)邏輯修改代碼。

比如我們要獲取微信的版本號,可以這樣寫:

var wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);
var currVer = wechatInfo[1];
if (VersionCompare(currVer, "6.2.5")) {
 //你的業(yè)務(wù)邏輯
}

注意:

時(shí)間倉促,這個(gè)方法僅僅作為普通的常用方法,沒有提供只比較主版本或子版本的方法,而是比較最終的整個(gè)版本號。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • JavaScript實(shí)現(xiàn)棧結(jié)構(gòu)Stack過程詳解

    JavaScript實(shí)現(xiàn)棧結(jié)構(gòu)Stack過程詳解

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)棧結(jié)構(gòu)Stack過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • JavaScript事件監(jiān)聽器詳細(xì)介紹

    JavaScript事件監(jiān)聽器詳細(xì)介紹

    這篇文章主要介紹了JavaScript事件監(jiān)聽器詳細(xì)介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • 8個(gè)JavaScript中高階函數(shù)的運(yùn)用分享

    8個(gè)JavaScript中高階函數(shù)的運(yùn)用分享

    高階函數(shù)是指以函數(shù)作為參數(shù)的函數(shù),并且可以將函數(shù)作為結(jié)果返回的函數(shù)。本文整理了8個(gè)JavaScript中高階函數(shù)的運(yùn)用,需要的可以參考一下
    2023-04-04
  • javascript與CSS復(fù)習(xí)(三)

    javascript與CSS復(fù)習(xí)(三)

    呵呵,又弄成了三部曲,這是最后一部分,關(guān)于鼠標(biāo)和瀏覽器本身顯示上的一些屬性。
    2010-06-06
  • 關(guān)于UTF-8的客戶端用AJAX方式獲取GB2312的服務(wù)器端亂碼問題的解決辦法

    關(guān)于UTF-8的客戶端用AJAX方式獲取GB2312的服務(wù)器端亂碼問題的解決辦法

    客戶端是UTF-8編碼,這也是現(xiàn)在大家公認(rèn)的標(biāo)準(zhǔn)編碼在這種情況下,實(shí)用AJAX異步獲取GB2312編碼的服務(wù)器端信息時(shí),不可避免的要遇到漢字亂碼問題
    2010-11-11
  • 值得分享的輕量級Bootstrap Table表格插件

    值得分享的輕量級Bootstrap Table表格插件

    這篇文章為大家分享了輕量級Bootstrap Table表格插件,以表格的形式顯示的數(shù)據(jù),支持單選,復(fù)選框,排序,分頁,顯示/隱藏列等操作,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 圖片上傳判斷及預(yù)覽腳本的效果實(shí)例

    圖片上傳判斷及預(yù)覽腳本的效果實(shí)例

    這篇文章介紹了圖片上傳判斷及預(yù)覽腳本的效果實(shí)例,有需要的朋友可以參考一下
    2013-08-08
  • ionic隱藏tabs的方法

    ionic隱藏tabs的方法

    這篇文章主要為大家詳細(xì)介紹了ionic隱藏tabs的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 詳解webpack的文件監(jiān)聽實(shí)現(xiàn)(熱更新)

    詳解webpack的文件監(jiān)聽實(shí)現(xiàn)(熱更新)

    這篇文章主要介紹了詳解webpack的文件監(jiān)聽實(shí)現(xiàn)(熱更新),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 微信小程序-form表單提交代碼實(shí)例

    微信小程序-form表單提交代碼實(shí)例

    這篇文章主要介紹了微信小程序-form表單提交,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論