一个bug 引发的js 字符串大小比较的问题

前端之家收集整理的这篇文章主要介绍了一个bug 引发的js 字符串大小比较的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一个bug 引发的js 字符串大小比较的问题


这是由于一个bug引发的探索
首先看一下代码


        
      

    function plus(){
        var i=$('#number').html();
        var left = $('#left').val();
        console.log(('nummber:'+i+typeof(i)));
        console.log('left:'+left+typeof(left));
        console.log(i >= left);
        if(i >= left){
            return null;
        }
        $('#number').html(++i);
    }
 

这个代码的作用是在购物车选择的时候确保所选数量不大于库存,
这个实现的方式是否优雅先不做考虑,现在来看一下问题,
使用jq 取值之后,这两个类型都是string类型的,这就造成了在比较的时候会出现一个严重的bug,在想象中应该是能够按照数字的形式进行比较的,但是其实是完全按照string类型的比较方式来进行的,这就会出现很多奇怪的情况,在设定最大值为一个数,不一定累加到什么时候就会出现错误的比较结果。
等之后有空的时候我再仔细研究一下js字符串的比较规则。

解决方

对类型进行强制转换就可以了,另一个方案是,去使用mvvm之类的框架来进行绑定,
最后安利

原文链接:https://www.f2er.com/note/421874.html

猜你在找的程序笔记相关文章