阿里巴巴的前端面試題目中有一道題是這樣的,是關於parseint()的用法的,題目如下
var b = parseint("01");
alert("b="+b);
var c = parseint("09/08/2009");
alert("c="+c);
解答這道題目,我們必須要知道parseint()是怎麼工作的?正確的答案應該是 b=1 c=0
a、parseint()將乙個字串轉換成整數,它將字串中的字元逐一解析,碰到不能解析的(不是乙個數了)就返回。盡可能多的解析(貪婪匹配)。
b、如果 string以 0 開頭,那麼 parseint() 把其後的字元解析為八進位制或十六進製制的數字。如果 string以 1 ~ 9 的數字開頭,parseint() 將把它解析為十進位制的整數。
舉例:比如parseint("ab123");
解析第乙個字元a,看到不是乙個數字,直接返回nan,not a numble 不是乙個數
舉例:比如parseint("123");
解析到1是個數字,這個時候沒有返回,由於要盡可能多的解析(貪婪匹配),所以再看2,也是個數字,再看3,還是個數字,沒了,,所以返回123;
了解了這些知識之後,我們來分析這道題目
1
var
b = parseint(
"01"
);
一看,0,parseint()預設要返回乙個8進製數,再解析1,沒了,這是js會解析到01,一看,這不是個8進製數中的1嗎,所以返回1。
2
alert(
"b="
+b);
輸出b=1,這裡的 + 是連字元
3
4
var
c = parseint(
"09/08/2009"
);
alert(
"c="
+c);
第3句,看到0之後,parseint()預設要返回乙個8進製數,再看後面是9,顯然這不是乙個8進製數,所以就返回乙個0了。
所以c=0
ParseInt函式引數設定
我們經常用parseint函式轉換字串為int數值,parseint函式有兩個引數可以設定,其中第二個引數可以預設。parseint 字串 使用的進製 var num1 parseint 10 2 2 var num1 parseint 10 8 8 var num1 parseint 10 10 ...
js中parseInt函式的解析
首先還是從很熱門的例項parseint 09 0說起。parseint number,type 這個函式後面如果不跟第2個引數來表示進製的話,預設是10進製。比如說parseint 010 10 就是10進製的結果 10,parseint 010 2 就是2進製的結果 2,parseint 010 ...
JS深入理解 探索parseInt函式
看到這樣一道題目 1 2 3 map parseint 執行結果是什麼?為什麼?執行結果是 1,nan,nan 我們將題目的 轉換一下 1 2 3 map item,index 相當於 parseint 1 0 1 why?parseint 2 1 nan why?parseint 3 2 nan ...