alert(parseInt("123blahblahblah456"));
那么会弹出一个警示框,显示的值是123。理想情况下,由于这是一个无效的整数字符串,函数不应该执行任何操作吧?
parseFloat()
同样也是如此。alert(parseInt("123blahblahblah456"));
那么会弹出一个警示框,显示的值是123。parseFloat()
同样也是如此。是的,所有的回答都正确。我想补充一点,这就是为什么在检查某个值是否可以转换为数字时,最好使用 Number
或者只使用 +
。
Number("123blahblahblah456"); //=> NaN
Number("123"); //=> 123
+"97.221" //=> 97.221
// if the conversion result needs to be an int
Math.round(Number("123.4567")); //=> 123
需要注意的是,Number
在某些情况下(出乎意料地)返回 0
。
+null //=> 0
+" " //=> 0
+"" //=> 0
+false //=> 0
+[] //=> 0
是的:parseInt()
的确是被设计成这样工作的;引用 Mozilla 开发者网络的解释:
parseInt 函数将它的第一个参数转换为一个字符串,然后解析这个字符串并且返回一个整数或 NaN。如果不是 NaN,则返回值将会是第一个参数在特定基数(即进制)下的十进制整数表示。例如,基数为 10 表示要从十进制数字转换,8 表示八进制,16 表示十六进制等等。对于大于 10 的基数,字母表示比 9 大的数字。例如,在十六进制数字(基数为 16)中,使用 A 到 F。
如果 parseInt 遇到了在指定基数下不是数字的字符,则会忽略该字符和所有后续字符,并返回解析到该点的整数值。parseInt 将数字截断为整数值。前导和尾随空格是被允许的。
看起来 parseInt()
明确地期望将一个字符串作为输入,并将第一个数字序列(直到遇到无效的数字字符)作为以 radix 参数指定的进制的数字返回。
顺便提一下,为了减少解析传递给 parseInt()
的字符串时出现错误,请记得使用 radix 参数,例如:
parseInt('123odod24',10); // for base-10
parseInt('123odod24',16); // for base-16
参考资料:
parseInt
试图解析字符串,直到找到非整数值为止,然后返回它所解析的部分。
因此,如果字符串为:
parseFloat
也是这样,只不过它不会在遇到小数点时停止解析。
isFinite()
感兴趣,它可以检查一个字符串是否为有限的、合法的数字:isFinite("123"); // true
isFinite("123a");// false
然而,这会针对空字符串和空格返回 true。因此,您可以通过编写以下内容来改进此解决方案
mystring = "123";
mystringb = " ";
!isNaN(parseInt(mystring)) && isFinite(mystring); // true
!isNaN(parseInt(mystringb)) && isFinite(mystringb); // false
根据这些建议,我相信您可以构建自己的函数,忽略任何包含非数字字符的字符串。
parseInt()
方法尝试解析直到找到一个字符。因此,如果您有:
parseInt("123 Iam funny")
,它将返回123。parseInt("whats up 4711")
,它将返回NaN。根据官方文档,parseInt
函数的行为如下:
如果在指定进制下解析时遇到一个非数字的字符,
parseInt
会忽略它及其后面的所有字符,并返回已经解析出来的整数部分。
无论这种行为是否明智,现在都已经太晚改变了。
是的!就像这里解释的一样: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("120px",10)
->120
- Ignitor