IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

用javascript比较语义化版本号

WEB前端开发 2016-05-05 22:39:15 累计浏览 1,497 次
本机暂存

移动端APP第三方开发中经常会碰到一些因为版本不同而造成JS SDK或JS API差异或支持的问题。对于移动前端来说,在实际第三方开发中可能会需要根据APP的版本号做一些特殊的业务逻辑处理。

语义化版本号

一般语义化版本号通常定义是这样的:

Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]] 主版本号.子版本号[.修正版本号[.编译版本号]]

定界符一般使用.

语义化版本号比较方法

这样我们可以做版本号比较,这里提供一个粗陋的方法:

/** * 版本比较 VersionCompare * @param {String} currVer 当前版本. * @param {String} promoteVer 比较版本. * @return {Boolean} false 当前版本小于比较版本返回 true. * * 使用 * VersionCompare("6.3","5.2.5"); // false. * VersionCompare("6.1", "6.1"); // false. * VersionCompare("6.1.5", "6.2"); // true. */varVersionCompare=function(currVer, promoteVer){    currVer = currVer ||"0.0.0";    promoteVer = promoteVer ||"0.0.0";if(currVer == promoteVer)returnfalse;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){returnfalse;}elseif(proVal > curVal){returntrue;}}returnfalse;};

使用也很简单:

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

这里需要注意的是根据我自己的业务逻辑当前版本小于比较版本返回 true。你可以根据自己的业务逻辑修改代码。

比如我们要获取微信的版本号,可以这样写:

var wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);var currVer = wechatInfo[1];if(VersionCompare(currVer,"6.2.5")){//你的业务逻辑}

注意:

时间仓促,这个方法仅仅作为普通的常用方法,没有提供只比较主版本或子版本的方法,而是比较最终的整个版本号。

顺便广告一下以前收集的常用方法:

javascript常用方法函数收集

javaScript常用方法函数收集(二)

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,344)
  2. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,399)
  3. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,928)
  4. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,843)
  5. 天朝第二代身份证号码的验证机制 (累计阅读 14,759)
  6. HTML 5 的data-* 自定义属性 (累计阅读 14,346)
  7. 分享一个JQUERY颜色选择插件 (累计阅读 14,222)
  8. 什么是全栈工程师? (累计阅读 14,033)
  9. 快速排序(Quicksort)的Javascript实现 (累计阅读 11,731)
  10. 7 天打造前端性能监控系统 (累计阅读 11,185)