Gab*_*art 53

包括基数:

parseInt("09", 10);
Run Code Online (Sandbox Code Playgroud)


cod*_*ike 11

这让我疯了 - parseInt("02")但不是parseInt("09").

正如其他人所说,解决方案是指定基数10:

parseInt("09", 10);
Run Code Online (Sandbox Code Playgroud)

有这种行为的一个很好的解释在这里

...在Javascript中,从零开始的数字被认为是八进制,并且八进制中没有08或09,因此出现问题.


小智 5

你也可以这样做:

Number('09') => 9

这将返回IE7,IE8,FF3,FF4和Chrome 10上的整数9.


小智 5

重新实现现有的parseInt,这样如果用一个参数调用它,则自动包含"10"作为第二个参数.

(function(){
  var oldParseInt = parseInt;
  parseInt = function(){
    if(arguments.length == 1)
    {
      return oldParseInt(arguments[0], 10);    
    }
    else
    {
      return oldParseInt.apply(this, arguments);
    }
  }
})();
Run Code Online (Sandbox Code Playgroud)