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