摘要:當(dāng)參數(shù)的值為,或沒有設(shè)置該參數(shù)時(shí),會(huì)根據(jù)來判斷數(shù)字的基數(shù)。如果以開頭,那么允許的一個(gè)實(shí)現(xiàn)把其后的字符解析為八進(jìn)制或十六進(jìn)制的數(shù)字。只有字符串中的第一個(gè)數(shù)字會(huì)被返回。開頭和結(jié)尾的空格是允許的。
當(dāng)參數(shù) radix 的值為 0,或沒有設(shè)置該參數(shù)時(shí),parseInt() 會(huì)根據(jù) string 來判斷數(shù)字的基數(shù)。
舉例,如果 string 以 "0x" 開頭,parseInt() 會(huì)把 string 的其余部分解析為十六進(jìn)制的整數(shù)。如果 string 以 0 開頭,那么 ECMAScript v3 允許 parseInt() 的一個(gè)實(shí)現(xiàn)把其后的字符解析為八進(jìn)制或十六進(jìn)制的數(shù)字。如果 string 以 1 ~ 9 的數(shù)字開頭,parseInt() 將把它解析為十進(jìn)制的整數(shù)。
只有字符串中的第一個(gè)數(shù)字會(huì)被返回。
開頭和結(jié)尾的空格是允許的。
function _parseInt (string, radix) { if (typeof string !== "string" && typeof string !== "number") return NaN; if (radix && (typeof radix !== "number" || /^[1-9]d*.d*|0.d*[1-9]d*$/.test(radix) || radix > 36 || radix < 2)) return NaN; string = String(string) var rexp = (radix == 10) ? /(-?)([0]?)([0-9]+)/ : /(-?)([0]?[Xx]?)([0-9a-fA-F]+)/, a = string.match(rexp), sign = a[1], rawRadix = a[2], rawNum = a[3], result = 0, strArr = rawNum.split(""), len = strArr.length, numArr = []; if (a && !radix) { if ( rawRadix.toUpperCase() === "0X") { radix = 16; } else if (rawRadix === "0") { radix = 8; } else { radix = 10; } } for (var i = 0; i < len; i++){ var num; var charCode = strArr[i].toUpperCase().charCodeAt(0); if(radix <=36 && radix >= 11) { if (charCode >= 65 && charCode <= 90) { num = charCode - 55; } else { num = charCode - 48; } } else { num = charCode - 48; } if (num < radix) { numArr.push(num); } else { return NaN }; } if(numArr.length > 0) { numArr.forEach(function(item, j){ result += item * Math.pow(radix, numArr.length-j-1); }) } if(sign === "-"){ result = -result; } return result }
來自MDN關(guān)于parseInt()里面的測試用例
// 以下例子均返回15: console.log(_parseInt("F", 16)); console.log(_parseInt("17", 8)); console.log(_parseInt("15", 10)); console.log(_parseInt(15.99, 10)); console.log(_parseInt("FXX123", 16)); console.log(_parseInt("1111", 2)); console.log(_parseInt("15*3", 10)); console.log(_parseInt("12", 13)); // 以下例子均返回 NaN: console.log(_parseInt("Hello", 8)); // Not a number at all console.log(_parseInt("546", 2)); // Digits are not valid for binary representations // 以下例子均返回 -15: console.log(_parseInt("-F", 16)); console.log(_parseInt("-0F", 16)); console.log(_parseInt("-0XF", 16)); console.log(_parseInt(-15.1, 10)); console.log(_parseInt(" -17", 8)); console.log(_parseInt(" -15", 10)); console.log(_parseInt("-1111", 2)); console.log(_parseInt("-15e1", 10)); console.log(_parseInt("-12", 13)); // 下例中也全部返回 17,因?yàn)檩斎氲?string 參數(shù)以 "0x" 開頭時(shí)作為十六進(jìn)制數(shù)字解釋,而第二個(gè)參數(shù)假如經(jīng)過 Number 函數(shù)轉(zhuǎn)換后為 0 或 NaN,則將會(huì)忽略。 console.log(_parseInt("0x11", 16)); console.log(_parseInt("0x11", 0)); console.log(_parseInt("0x11")); // 下面的例子返回 224 console.log(_parseInt("0e0",16));
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/84780.html
摘要:函數(shù)不是函數(shù)這是一個(gè)低版本的,,或則。對應(yīng)的進(jìn)制數(shù)為。因此最安全的方法是調(diào)用的時(shí)候指定進(jìn)制。它會(huì)將字符串形式的整數(shù)轉(zhuǎn)換為,非字符串的,,和也會(huì)被轉(zhuǎn)換。對于不能轉(zhuǎn)換的值,返回。而瀏覽器主要指系列,其實(shí)已經(jīng)沒有必要支持這個(gè)特性了。 譯者按: JavaScript有很多坑,經(jīng)常一不小心就要寫bug。 原文: What the f*ck JavaScript? 譯者: Fundebug ...
摘要:第一題為的返回值。返回值其中的每個(gè)元素均為關(guān)聯(lián)的原始數(shù)組元素的回調(diào)函數(shù)返回值的新數(shù)組。修改數(shù)組對象數(shù)組對象可由回調(diào)函數(shù)修改。方法啟動(dòng)后的條件元素是否傳遞給回調(diào)函數(shù)在數(shù)組的原始長度之外添加元素。 JavaScript Puzzlers! 被稱為 javascript 界的專業(yè)八級測驗(yàn),感興趣的 jser 可以去試試。 我試了一下, 36 道題只做對了 19 道, 算下來正確率為 53%,...
摘要:學(xué)習(xí)筆記之?dāng)?shù)組二輸出什么為什么有三個(gè)參數(shù)數(shù)組元素,元素索引,數(shù)組本身有兩個(gè)參數(shù)元素本身以及進(jìn)制語法參數(shù)可選。表示要解析的數(shù)字的基數(shù)。如果該參數(shù)小于或者大于,則將返回。當(dāng)參數(shù)的值為或沒有設(shè)置該參數(shù)時(shí),會(huì)根據(jù)來判斷數(shù)字的基數(shù)。 JavaScript學(xué)習(xí)筆記之?dāng)?shù)組(二) 1.[1,2,3].map(parseInt) 輸出什么,為什么? [1,2,3].map(parseInt)//[1,N...
摘要:另外自己寫代碼測試了下和的速度,比較結(jié)果如下位操作轉(zhuǎn)換整數(shù)的原理參考上面對于位操作的說明,點(diǎn)擊下面鏈接有這樣一段話中,數(shù)字存儲(chǔ)是雙進(jìn)度位浮點(diǎn)數(shù)。但是位操作卻會(huì)把要操作的運(yùn)算元當(dāng)做位帶符號的整數(shù)。因此進(jìn)行位操作時(shí),會(huì)自動(dòng)把數(shù)字先轉(zhuǎn)換為整數(shù)。 本文將會(huì)列舉并說明JavaScript 把一個(gè)number(或者numerical的對象)轉(zhuǎn)換成一個(gè)整數(shù)相關(guān)方法。 使用parseInt parse...
摘要:表示要解析的數(shù)字的基數(shù)?;卣{(diào)函數(shù)接收四個(gè)參數(shù),依次是通過上一次調(diào)用回調(diào)函數(shù)獲得的值。如果向方法提供,則在首次調(diào)用函數(shù)時(shí),為。當(dāng)前數(shù)組元素的值。 原題出處:JavaScript Puzzlers!當(dāng)初以為不過是一些小題目,結(jié)果做到懷疑人生,都要懷疑可能我javascript白學(xué)了。讀者可以去試試。 不多說,直接上題: 第一題 [1, 2, 3].map(parseInt) 不要被套路,這...
閱讀 1356·2023-04-26 00:35
閱讀 2728·2023-04-25 18:32
閱讀 3379·2021-11-24 11:14
閱讀 782·2021-11-22 15:24
閱讀 1432·2021-11-18 10:07
閱讀 6561·2021-09-22 10:57
閱讀 2787·2021-09-07 09:58
閱讀 3575·2019-08-30 15:54