如果我寫這個劇本: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