亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Javascript中字符串轉(zhuǎn)數(shù)字

系統(tǒng) 1990 0

我們知道最簡(jiǎn)潔的數(shù)字轉(zhuǎn)字符串方法是:

        
          var
        
         num = 123
        
          ;

        
        
          var
        
         string = num + "";
      

也就是在數(shù)字后面加上一個(gè)空字符。那么最簡(jiǎn)潔字符串轉(zhuǎn)數(shù)字方法呢?

?

字符串只能進(jìn)行加法(拼接)

字符串進(jìn)行加法(拼接)是很常見(jiàn)的,但是字符串進(jìn)行減法、乘法、除法呢?

這似乎很難定義,實(shí)際上字符串沒(méi)有減法、乘法、除法操作。

但Javascript是動(dòng)態(tài)語(yǔ)言,如果你拿兩個(gè)字符串進(jìn)行這三種操作的時(shí)候,他會(huì)嘗試將其轉(zhuǎn)成數(shù)字再進(jìn)行相應(yīng)的操作。例如:

      alert("45" - "32"); 
      
        //
      
      
        13
      
    
      alert("5" * "6"); 
      
        //
      
      
        30
      
    
      alert("12" / "3"); 
      
        //
      
      
        4
      
    

但這種轉(zhuǎn)換操作和parseInt和parseFloat不太像,而和Number比較像,比如:

      alert("123a" - "2bc"); 
      
        //
      
      
        NaN
      
      
alert(parseInt("123a") - parseInt("2bc")); 
      
        //
      
      
        121
      
      
alert(Number("123a") - Number("2bc")); 
      
        //
      
      
        NaN
      
    

也就是說(shuō),這種轉(zhuǎn)換和Number一樣,會(huì)將非純數(shù)字型字符串轉(zhuǎn)成NaN,表示其是非數(shù)字。

而parseInt、parseFloat則會(huì)取出字符串中取出前面的能表示成數(shù)字的部分,而忽略掉后面不能表示成數(shù)字的部分。

?

最簡(jiǎn)潔的字符串轉(zhuǎn)數(shù)字方法

借助字符串在進(jìn)行其不能進(jìn)行的運(yùn)算時(shí)會(huì)先嘗試轉(zhuǎn)成數(shù)字這個(gè)特性。我們可以對(duì)字符串前加上正符號(hào)來(lái)將字符串轉(zhuǎn)成數(shù)字。如:

      
        var
      
       num = +"45"
      
        ;
alert(
      
      
        typeof
      
       num); 
      
        //
      
      
        number
      
    

jQuery中有一個(gè)這個(gè)方法的應(yīng)用,比如我們得到一個(gè)字符串怎么判斷他能不能當(dāng)成數(shù)字看待呢?jQuery的方法:

      
        var
      
       string = "321";  
      
        //
      
      
        這個(gè)是得到的字符串,隨意是什么
      
      
alert(+string + "" === string);  
      
        //
      
      
        true表示可以當(dāng)成數(shù)字,否則不行 
      
    

我們注意到,如果string = "000",那么返回是false。

但實(shí)際上jQuery是為了獲取HTML5里的data-Attribute的屬性,由于data-Attribute屬性返回的必然是字符串。如果字符串是"000",那么也不應(yīng)當(dāng)將其看做是數(shù)字0。

thanks? shuaisam

如果要得到字符串是不是由純數(shù)字組成可以這么判斷:

      
        var
      
       string = "000"
      
        ;
alert(
      
      +string + "" !== "NaN");
    

其實(shí)利用這個(gè)特性還有其他方法,比如:

      
        var
      
       num = "45" - 0
      
        ;
alert(
      
      
        typeof
      
       num); 
      
        //
      
      
        number
      
    
      
        var
      
       num = "45" * 1
      
        ;
alert(
      
      
        typeof
      
       num); 
      
        //
      
      
        number
      
    
      
        var
      
       num = "45" / 1
      
        ;
alert(
      
      
        typeof
      
       num); 
      
        //
      
      
        number
      
    

?

進(jìn)制問(wèn)題?

0x開(kāi)頭的是16進(jìn)制,所以Number和parseInt都會(huì)對(duì)16進(jìn)制進(jìn)行相應(yīng)的轉(zhuǎn)換,字符串的自動(dòng)轉(zhuǎn)換也是這般:

      alert(parseInt("0x10")); 
      
        //
      
      
        16
      
      
alert(Number("0x10")); 
      
        //
      
      
        16
      
      
alert(+"0x10"); 
      
        //
      
      
        16
      
    

不過(guò)parseFloat有些鬧別扭,他不認(rèn)識(shí)16進(jìn)制,結(jié)果變成這樣:

      alert(parseFloat("0x10")); 
      
        //
      
      
        0
      
    

更悲劇的是0開(kāi)頭的,我們知道0開(kāi)頭可以用來(lái)表示8進(jìn)制,在Number和字符串自動(dòng)轉(zhuǎn)換中,0開(kāi)頭會(huì)當(dāng)成十進(jìn)制來(lái)獲取,如:

      alert(Number("010")); 
      
        //
      
      
        10
      
      
alert(+"010"); 
      
        //
      
      
        10
      
    

而parseInt中卻很悲催,ECMAScript中并未對(duì)此進(jìn)行強(qiáng)制規(guī)定所以出現(xiàn)了下面的情況:

      alert(parseInt("010")); 
      
        //
      
      
        8 in Firefox & IE
      
    
      alert(parseInt("010")); 
      
        //
      
      
        10 in Chrome
      
    

╮(╯_╰)╭ 難怪很少見(jiàn)到Javascript中用到8進(jìn)制,如果要確保8進(jìn)制只能使用parseInt的第二個(gè)參數(shù)了:

      alert(parseInt("010", 8)); 
      
        //
      
      
        8
      
    

parseFloat繼續(xù)不認(rèn)識(shí)8進(jìn)制,所以:

      alert(parseFloat("010")); 
      
        //
      
      
        10
      
    

?

?

Javascript中字符串轉(zhuǎn)數(shù)字


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 人成午夜视频 | 九九九九热精品视频 | 欧美日韩一区二区在线观看视频 | 国产四区 | 成人窝窝午夜看片 | 激情网址大全 | 精品国免费一区二区三区 | 伊人久久视频 | 爆操大奶美女 | 久久久精品久久视频只有精品 | 色偷偷亚洲第一综合 | 免费一级毛片在线播放视频 | 91精品国产亚一区二区三区 | 手机看片福利盒子久久 | 日韩av成人 | 精品国产一区二区三区久久 | 国产免费无遮挡精品视频 | 奇米色视频 | 中文字幕国产在线观看 | 国产区一区 | 日日摸夜夜欧美一区二区 | 国产好大好爽久久久久久久 | 最新中文字幕在线 | 在线观看黄色网 | 国产精品亚洲专一区二区三区 | 天天操天天干天天玩 | 欧美成人另类 | 97av麻豆蜜桃一区二区 | 成人精品视频在线 | 日韩欧美一二三区 | 欧美成人鲁丝片在线观看 | 性久久 | 亚洲欧美日韩一区 | 久久久久琪琪免费影院 | 国产一区二区在免费观看 | 久久99国产亚洲精品观看 | 成人四虎影院 | 中文字幕在线免费观看视频 | 中文国产成人精品少久久 | 青青操网址| 在线观看福利影院 |