偶然看到了“Firefox 正在测试 100.0 版本号会引起哪些 Bug”的公众号文章,因该文章小编不懂原理还硬写,让读者火大,索性自己研究下。

为啥研究

程序员看技术文章,讲究的就是一个前因后果,但看到这篇文章描述的“原因”时,我的火噌的一下就冒了出来:

看完上面的截图,你看懂了为啥版本号能引起故障了吗?

到底为什么版本号能引起故障啊?不读取 100.0 或者转为字符串会发生啥呀?你倒是说啊!

搜了下英文报道,发现这篇“技术文章”就是全篇翻译某篇英文报道,而报道里仅仅提了一嘴字符串问题,没说详细原因,只会翻译原文的小编自然也写不出来。当然,小编嘛,发文第一位,至于内容是否合理,根本不管。

探究原因

英文报道里的例子指向了一个 Github issue,里面详细地描述了某网站出现 Bug 的原因,我用一个实验让你感受下这个 Bug。

  1. 浏览网页的你,按下 F12,打开控制台。

  2. 在控制台输入如下代码:

    let c = "100.0",d="2";
    // 回车
    console.log(d > c);
    // 回车
    
  3. 观察现象

如果一切顺利,你的结果应该如下所示:

这是一个很常见的字符串比较问题,因为 2 的 ASCII 码比 1 大,因此字符串首位比较即出结果。

对于某些框架或库来说,为了支持不同版本浏览器的特性,会使用版本字符串做比较,举个例子:

if(nowVersion > "70"){
    //样式1,事件1
}else if(nowVersion > "55"){
    //样式2,事件2
}else{
    //Too old,do not support
}

因此,当版本号升级到 100.0 时,使用字符串比较,可能会出现匹配不到支持版本的尴尬现象,而使用数字比较则无问题。

其他

致某公众号的某小编:“为什么版本号会引起潜在故障”,你仔细读读你的答案,那玩意是答案吗?

作为面向信息技术的公众号,写文章最起码要把问题原因写出来,要是不知道就不写,也成。您看看这写的啥呀,有个“但”字它就是原因了?!

梓喵出没博客(azimiao.com)版权所有,转载请注明链接:https://www.azimiao.com/8112.html
欢迎加入梓喵出没博客交流群:313732000

我来吐槽

*

*

0位绅士参与评论

  1. Nurupo08-23 09:38 回复

    别那么生气勒,习惯了就好~
    现在这个流量爆棚的时代他们就是为了抓眼球标题什么都能扯。有空还是多上上外网搜文章,尤其是技术类的:)