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

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)論
主站蜘蛛池模板: 亚洲天堂不卡 | 一区二区三区四区国产 | 涩涩的视频在线观看 | 久久午夜一区二区 | 精品一区二区三区视频在线观看 | 三级不卡 | 国产精品视频a | 欧美一级毛片免费大全 | 久久久久久久免费 | 日韩欧美亚洲综合久久影院d3 | 国产一区二区三区在线免费 | 四虎影院永久 | 快射视频在线观看 | 99热这里有免费国产精品 | 国产玖玖在线 | 99精品视频免费 | 天天操天天操天天操香蕉 | 免费看黄色的视频 | 99欧美在线| 免费国产小视频在线观看 | 在线观看深夜观看网站免费 | 国产成人精品一区二区仙踪林 | 色精品一区二区三区 | 久久精品免看国产 | 精品香蕉一区二区三区 | 亚洲九九爱 | 中文字幕一视频97色伦 | 亚欧乱色精品免费观看 | 91国语精品自产拍在线观看一 | 欧美高清激情毛片 | 老子影院我不卡 | 国产精品毛片一区二区三区 | 久久综合免费 | 一本色道久久综合亚洲精品高清 | 免费黄色福利 | 全部免费的毛片在线看青青 | 国内精品91久久久久 | 婷婷五 在线播放 | 亚洲欧美一区二区三区九九九 | 国产18到20岁美女毛片 | 天天噜夜夜操 |