如果我写这个剧本:parseInt()是否应该像这样工作?
alert(parseInt("123blahblahblah456"));
我得到的警报,该值123
理想的情况下,不应该的功能不做任何事情,因为它是一个无效的整数字符串? 类似的情况是parseFloat()
如果我写这个剧本:parseInt()是否应该像这样工作?
alert(parseInt("123blahblahblah456"));
我得到的警报,该值123
理想的情况下,不应该的功能不做任何事情,因为它是一个无效的整数字符串? 类似的情况是parseFloat()
是的:parseInt()
绝对是这样工作的;引用Mozilla开发者网络条目:
的parseInt函数功能第一个参数转换为字符串,分析它,并返回一个整数或NaN。如果不是NaN,则返回的值将是第一个参数的十进制整数表示形式,该形式以指定基数(base)中的数字形式表示。例如,基数为10表示从十进制数,8个八进制数,16个十六进制数等转换而来。对于10以上的基数,字母表中的字母表示数字大于9.例如,对于十六进制数字(基数为16),使用A到F.
如果parseInt遇到不是指定基数中的数字的字符,它会忽略它和所有后续字符,并返回解析到该点的整数值。 parseInt将数字截断为整数值。前后空格是允许的。
似乎parseInt()
明确希望获得一个字符串,并会采取数的第一序列(直到遇到一个无效的数字字符)并返回多项任何基地是在基数参数中指定的。
parseInt('123odod24',10); // for base-10
parseInt('123odod24',16); // for base-16
参考:
parseInt()
at the MDC 顺便说一句,解析传递给parseInt()
的字符串时记得使用基数参数,例如,以减少错误。
parseInt
试图解析字符串,直到它找到一个非整数值,此时它返回它所有的值。
因此,如果字符串是:
与parseFloat
相同除了t帽子不会在.
是的!像在这里说明一下:http://www.w3schools.com/jsref/jsref_parseInt.asp
提示和注意
注意:只有返回字符串中的第一个数字!
注意:允许使用前导和尾随空格。
注意:如果第一个字符不能转换为数字, parseInt()返回NaN。
例
解析不同的字符串:
<script type="text/javascript">
document.write(parseInt("10") + "<br />");
document.write(parseInt("10.33") + "<br />");
document.write(parseInt("34 45 66") + "<br />");
document.write(parseInt(" 60 ") + "<br />");
document.write(parseInt("40 years") + "<br />");
document.write(parseInt("He was 40") + "<br />");
document.write("<br />");
document.write(parseInt("10",10)+ "<br />");
document.write(parseInt("010")+ "<br />");
document.write(parseInt("10",8)+ "<br />");
document.write(parseInt("0x10")+ "<br />");
document.write(parseInt("10",16)+ "<br />");
</script>
代码的输出将是:
10
10
34
60
40
NaN
10
8
8
16
16
据我知道parseInt()
方法试图解析直到找到一个角色。所以,如果你有
parseInt("123 Iam funny")
将返回123parseInt("whats up 4711")
将返回NaN的有些文件可能会被检查出:
这是documented to behave like that:
如果
parseInt
遇到一个字符是不是在 指定基数的数字,却忽视了它,所有随后的字符和 返回解析到这一点整数值。
这种行为是否是一个好主意是另一回事,但现在改变它已经太迟了。
这是它是如何工作的。它解析字符串直到达到非数字字符。
您可能感兴趣的检查出功能isFinite()
,它会检查羯羊一个字符串是有限的,合法的数字:
isFinite("123"); // true
isFinite("123a");// false
但是这会为空字符串和空白返回true。因此,您可以通过编写
mystring = "123";
mystringb = " ";
!isNaN(parseInt(mystring)) && isFinite(mystring); // true
!isNaN(parseInt(mystringb)) && isFinite(mystringb); // false
根据这些建议,我敢肯定,你可以建立自己的功能,将忽略包含非数字字符的任意字符串改善这种解决方案。
是的,比较所有的肛门。我想补充一点,这就是为什么检查某个值是否可以转换为数字,最好使用Number
。
Number("123blahblahblah456"); //=> NaN
Number("123"); //=> 123
// if the conversion result needs to be an int
Math.round(Number("123.4567")); //=> 123
不错的提示..不知道数字部分...谢谢(你的)信息.. – Vrushank 2012-02-24 14:58:39
方便的谷歌搜索提示:一个JavaScript函数的名称后输入“MDN”,例如,“parseInt函数MDN”,以及第一个搜索结果是几乎总是在Mozilla开发者网络的适当DOCO页面。 – nnnnnn 2012-02-24 10:43:02
当你解析CSS属性时,这种行为变得很方便,因为有时它们包含一个单元:'parseInt(“120px”,10)' - >'120' – Ignitor 2012-09-08 16:43:03