摘要:很多時候,我們的數(shù)字是字符串的形式的,如,它們可能是從輸入框中獲取,可能是來自后端的接口。我們有義務(wù)把他們變成整型。下面介紹幾種方案這是就有的語法了,用法版本發(fā)展到的時候,被移到中。遇到浮點數(shù)時,小數(shù)部分被丟棄。遇到非法字符,直接被轉(zhuǎn)換成。
很多時候,我們的數(shù)字是字符串的形式的,如:"1", "3", ["2", "4"],它們可能是從輸入框 中獲取,可能是來自后端的接口。我們有義務(wù)把他們變成整型。下面介紹幾種方案
1、parseInt這是es3就有的語法了,用法:
parseInt("123"); // 123 => number
js版本發(fā)展到es6的時候,parseInt被移到Number中。當(dāng)然了,原來的parseInt可以繼續(xù)使用
Number.parseInt("123"); // 123 => number
加入數(shù)字中帶有非數(shù)字的字符,那么第一個出現(xiàn)非法字符的地方將會被截斷
Number.parseInt("1239y93p21"); // 1239 => number2、parseFloat
和parseInt差不多,但parseFloat主要針對浮點數(shù)的轉(zhuǎn)換
parseFloat("123"); // 123 => number Number.parseFloat("123"); // 123 => number Number.parseFloat("123.4"); // 123.4 => number
同樣有截斷非法字符的規(guī)則
Number.parseInt("1239.34y93p21"); // 1239.34 => number Number.parseInt("12 39.34y93p21"); // 12 => number3、Number
es6新出的接口,可以直接使用,并且對浮點數(shù)也是有效的
Number("123"); // 123 => number Number("123.4"); // 123.4 => number
與parse*()不同,Number處理時,遇到非法字符,直接NaN了,注意:NaN的類型也是number。
Number("123b"); // NaN => number Number("123.4b"); // NaN => number4、乘法+減法
是的,直接乘以1就行了
"123" * 1; // 123 => number "123.4" * 1; // 123.4 => number ‘123’ - 0; // 1234 => number "123.4" - 0; // 123.4 => number
遇到非法字符,也是直接NaN了。
"123b" * 1; // NaN => number
注意:加法是不能轉(zhuǎn)換類型的呢,會被當(dāng)成字符串拼接:
"123" + 0; // ’1230‘ => string5、按位或
這就是二進制方面的處理了,但是只能處理整數(shù)。遇到浮點數(shù)時,小數(shù)部分被丟棄。遇到非法字符,直接被轉(zhuǎn)換成0。因為按位或會將數(shù)字轉(zhuǎn)換成帶符號的32位整數(shù),多余的位數(shù)會被直接丟棄;所以按位或支持的整數(shù)范圍是[pow(-2, 31), pow(2, 31) - 1]
"123" | 0; // 123 => number "123.4" | 0; // 123 => number "123rd" | 0; // 0 => number a = Math.pow(2, 31) // 2147483648 <=> 10000000000000000000000000000000 a | 0 // -2147483648 => number (a - 1) | 0 // 2147483647 => number
為什么整數(shù)轉(zhuǎn)為負數(shù)了呢,因為帶符號二進制中,最高位(第32)是1,代表負數(shù)
對于字符串?dāng)?shù)組的轉(zhuǎn)換,可以利用Number的特性
["1", "2", "3"].map(Number) // [1, 2, 3] => number[]
還有其他的嗎?如果有補充歡迎留言。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/108007.html
摘要:通過使用的方式獲取對象的數(shù)據(jù)類型,包括以下類型。該函數(shù)指定字符串中的首個字符是否是數(shù)字。 一、動態(tài)類型語言 JavaScript是一種動態(tài)類型語言(dynamically typed language)。這意味著你聲明變量時可以不必指定數(shù)據(jù)類型,而數(shù)據(jù)類型會在腳本執(zhí)行時根據(jù)需要自動轉(zhuǎn)換。 1.1 定義變量 showImg(https://segmentfault.com/img/bV6...
摘要:一有和無在圖中,值的六種類型用藍底色的矩形表示。想一下在語言中,根本沒有布爾類型,通常用來表示邏輯真假的正是整數(shù)和。根據(jù)圖,需要將布爾類型轉(zhuǎn)為數(shù)字類型,而轉(zhuǎn)為數(shù)字的結(jié)果是,所以表達式變?yōu)閮蓚€操作數(shù)變成了對象類型數(shù)字類型。 大家知道,==是JavaScript中比較復(fù)雜的一個運算符。它的運算規(guī)則奇怪,容易讓人犯錯,從而成為JavaScript中最糟糕的特性之一。 在仔細閱讀了ECMASc...
摘要:表示行的結(jié)束,表示必須以數(shù)字結(jié)束。用表示的就是要提取的分組。方法在匹配成功后,會返回一個,第一個元素是正則表達式匹配到的整個字符串,后面的字符串表示匹配成功的子串。貪婪匹配需要特別指出的是,正則匹配默認是貪婪匹配,也就是匹配盡可能多的字符。 對象 typeof 123; // number typeof NaN; // number typeof str; // string type...
摘要:我們首先了解一下中有關(guān)類型轉(zhuǎn)換的知識。新增類型拋出異常從列表可以明顯看到少了一個類型轉(zhuǎn)換為的規(guī)則。這里要強調(diào)一點第二個表達式?jīng)]有涉及到強制類型轉(zhuǎn)換。如果文中有錯誤或者有某些強制轉(zhuǎn)換的情形沒有涉及到請及時留言告知,我會修改并補充進去。 javascript是一門非常奇特的語言,它有時候奇特的會讓人懷疑人生。比如讓我們看一下下面的一些奇葩例子: false == 0 ...
閱讀 3534·2021-10-14 09:42
閱讀 2802·2021-09-08 10:44
閱讀 1402·2021-09-02 10:18
閱讀 3791·2021-08-30 09:43
閱讀 2906·2021-07-29 13:49
閱讀 3784·2019-08-29 17:02
閱讀 1645·2019-08-29 15:09
閱讀 1093·2019-08-29 11:01