How do I work around JavaScript's parseInt octal behavior?

后端 未结 10 1635
Happy的楠姐
Happy的楠姐 2020-11-21 07:36

Try executing the following in JavaScript:

parseInt(\'01\'); //equals 1
parseInt(\'02\'); //equals 2
parseInt(\'03\'); //equals 3
parseInt(\'04\'); //equals          


        
10条回答
  •  天涯浪人
    2020-11-21 08:07

    If you've done a bunch of coding already with parseInt and don't want to add ",10" to everything, you can just override the function to make base 10 the default:

    window._oldParseInt = window.parseInt;
    window.parseInt = function(str, rad) {
        if (! rad) {
            return _oldParseInt(str, 10);
        }
        return _oldParseInt(str, rad);
    };
    

    That may confuse a later reader, so making a parseInt10() function might be more self-explanatory. Personally I prefer using a simple function than having to add ",10" all the time - just creates more opportunity for mistakes.

提交回复
热议问题