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