(3)轉(zhuǎn)換為數(shù)值類型
1)Number(mix)函數(shù):將任意類型轉(zhuǎn)換為數(shù)值型
undefined->NaN
null->0
布爾類型:true->1,false->0
字符串類型
1.如果字符是空字符“”->0替久。
2.只包含數(shù)字(包含前面帶正負號的情況)->十進制的數(shù)值接校。如“1”->1凌外,“1.1”->1.1。
3.忽略字符串前面的空格棺克,直到找到第一個非空字符
4.如果字符串中包含字符->NaN。如“asd”->NaN
5.如果字符中包含有效的十六進制->相同大小的十進制整數(shù)值炭晒。如“0x12”衍慎。
如:
Number(undefined) ?//返回NaN
Number(null) ?//返回0
Number(true) ?//返回1
Number(“”) ?//返回0
Number(“12”) ?//返回12
Number(“12ab”) ?//返回NaN
Number(“0x1f”) ?//返回31
注意:如果是八進制的數(shù)值呢?如“012”
Number(“012”) ?//返回12
原因在于在ECMAScript 3 JavaScript引擎中會把“012”做為一個八進制數(shù)解析命迈,但是在ECMAScript 5之后JavaScript引擎中已經(jīng)不再具備解析八進制的能力贩绕,因此前面的0會被認為無效火的,被認為是為“0”,從而轉(zhuǎn)換的結(jié)果為12
2)parseInt(string,radix):將字符串類型轉(zhuǎn)換為整型淑倾。
1.忽略字符串前面的空格馏鹤,直到找到第一個非空字符
2.如果第一個字符是數(shù)字。則繼續(xù)解析娇哆,直到遇到第一個非數(shù)字字符串為止湃累。返回數(shù)字的整數(shù)部分
3.如果第一個字符是數(shù)字,可以按照指定radix參數(shù)值來進行解析
4.如果第一個字符不是數(shù)字,則返回NaN
如:
parseInt(“12ab”)//返回12
parseInt(“12ab” 碍讨,8)//返回10
parseInt(“a12b”)//返回NaN
3)parseFloat(string):將字符串類型轉(zhuǎn)換為浮點型治力。
1.忽略字符串前面的空格,直到找到第一個非空字符
2.如果第一個字符是數(shù)字勃黍。則繼續(xù)解析宵统,直到遇到第一個非數(shù)字字符串為止。返回解析的數(shù)字
3.如果字符串包含一個可解析為整數(shù)的數(shù)覆获,則返回整數(shù)值而不是浮點數(shù)值马澈。
4.如果第一個字符不是數(shù)字,則返回NaN
如:
parseFloat(“12.23ab”)//返回12.23
parseFloat(“12ab”)//返回12
轉(zhuǎn)換為數(shù)值型三個方法的區(qū)別
1.轉(zhuǎn)換類型
Number函數(shù)可以將任意類型轉(zhuǎn)換為數(shù)值型
parseInt函數(shù)和parseFloat函數(shù)只能將字符串轉(zhuǎn)換為數(shù)值型
2.只包含數(shù)字的字符串
Number函數(shù):如果數(shù)字是整數(shù)則轉(zhuǎn)換為整數(shù),如果數(shù)字是浮點數(shù)則轉(zhuǎn)換為浮點數(shù)數(shù)弄息。
parseInt函數(shù):轉(zhuǎn)換為整數(shù)痊班。
parseFloat函數(shù):如果是數(shù)字是浮點數(shù)則轉(zhuǎn)換為浮點數(shù)。如果是整數(shù)則轉(zhuǎn)換為整數(shù)
3.包含數(shù)字和字符的字符串
Number函數(shù):將整個字符串都轉(zhuǎn)換為NaN
parseInt函數(shù)摹量,parseFloat函數(shù):按照轉(zhuǎn)換規(guī)則進行轉(zhuǎn)換涤伐。
4.按照進制數(shù)來轉(zhuǎn)換
Number函數(shù),parseFloat函數(shù):不能按照進制數(shù)轉(zhuǎn)換
parseInt函數(shù):可以按照進制數(shù)轉(zhuǎn)換