var a = parseInt("09"), b = Number("09");
很多人會認為a和b的值都是數字9,但實際上不是。
parseInt的主要作用是把字符串轉換為整數,或者把小數轉換為整數。一般情況下,我們只用到它的第一個參數。但實際上,它有兩個參數:
parseInt(string, radix)
parseInt會根據radix指定的進制進行轉換,比如:
alert(parseInt("10", 2)); // outputs '2'
在沒有指定radix或者radix為0的情況下,parseInt會按十進制進行轉換。然而,這在某些情況下有點特殊:
* 如果string的值以“0x”開頭,parseInt會按十六進制進行轉換;
* 如果string的值以“0”開頭,parseInt會按八進制進行轉換。
說回開頭的代碼,由于"09"是以“0”開頭,所以parseInt會按八進制進行轉換,但是“9”不是合法的八進制值(八進制只有0-7八個數字),所以轉換結果是0。
要避免這個陷進,可以強制指定radix:
alert(parseInt("09", 10)); // outputs '9'
其它網友的補充:
看代碼:
alert(parseInt(0.000001));
alert(parseInt(0.0000001));
第一條語句輸出 0, 第二條語句輸出 1,
主站蜘蛛池模板:
大方县|
宜兴市|
阳城县|
鹤峰县|
开远市|
安泽县|
肃北|
昌乐县|
长海县|
贵港市|
太仆寺旗|
扶绥县|
区。|
沙坪坝区|
延津县|
雷州市|
大渡口区|
曲靖市|
宜都市|
吉安市|
道孚县|
昂仁县|
阿合奇县|
嵩明县|
新沂市|
亚东县|
芮城县|
乐陵市|
敦煌市|
五常市|
襄樊市|
武夷山市|
曲水县|
化德县|
西青区|
贵南县|
徐州市|
中方县|
金塔县|
洛扎县|
山阳县|