閱讀目錄
前言
Boolean轉換規則
Number轉換規則
String轉換規則
Boolean轉換規則
結束語
前言
在javascript中,我學習中比較混亂的就是各種數值類型之間的轉換,所以寫這篇文章作為記錄,如果文中有任何不正確的地方,請大家盡量拍磚,相互學習,共同進步。
Boolean轉換規則
在javascript中,Boolean是內部的基本包裝類型之一,它是一個函數,可以用來構建布爾類型的值:true or false。構建出來的實例,可以調用Boolean提供的方法。除此之外,Boolean也是一個函數,可以用來進行數據轉換為布爾值。可以對任何數據類型的值調用Boolean函數,而且都會返回一個Boolean值,具體轉換規則如下:
數據類型 |
轉換為true的值 |
轉換為false的值 |
Boolean |
true |
false |
String |
任何非空字符串 |
“”/’’(空字符串) |
Number |
任何非零數字值(包括無窮) |
0 和NaN |
Object |
任何對象 |
Null |
Undefined |
不適用 |
Undefined |
Number轉換規則
對於數值類型,有3個轉換函數:Number、parseInt、parseFloat。Number可以用於任何數據類型,后面兩個則專門用於把字符串轉換成數值。
Number()轉換規則 :
1、 如果是Boolean值,true和false將被轉換為1和0;
2、 如果是數字值,就就是簡單的傳入和返回;
3、 如果是null,則返回0;
4、 如果是undefined,返回NaN;
5、 如果是字符串,遵循下列規則:
1) 如果字符串只包含數字,則轉換為十進制值,當然,前導零會被忽略。”000123”->123
2) 如果字符串中包含有效的浮點格式,則轉為對應的浮點值,前導零也會被忽略
3) 如果包含有效的十六進制格式,則轉為大小相同的十進制數
4) 如果是空的,則轉換為0
5) 如果包含除以上格式之外的字符,則將其轉換為NaN。
6、 如果是對象,則調用對象的valueOf方法,然后按照前面的規則轉換返回的值,如果轉換的結果是NaN,則調用對象的toString()方法,再按照前面的規則返回字符串。
這么多規則,光看文字就暈了,看看幾個例子:
var num1 = Number(“Hello”);//NaN
var num2 = Number(“”);//0
var num3= Number(“000111”);//111
var num4 = Number(“true”);//1
var num5 = Number(null);//0
var num6 = Number(undefined);//NaN
var num7= Number(22);//22
Number()用來轉換實在太復雜了,所以一般會用parseInt和parseFloat。
parseInt()轉換規則
parseInt() 會忽略字符串前面的空格,規則如下:
1、 如果是數字,則簡單的傳入傳出,但是浮點數的話,則只取整數部分
2、 如果是字符串,第一個字符不是數字或者符號,則返回NaN,
3、 空字符串,返回NaN
4、 如果第一字符是數字字符,則會繼續解析,直到遇到一個非數字字符,
5、 如果字符串是浮點數的形式,也只取整數部分
6、 如果第一個是數字字符,並且符合八進制和十六進制的寫法(0和0x),則會相應的當成對應的進制數轉換。直到遇到一個非數字字符
看下例子,印象比較深刻
var num1 = parseInt(22);//22
var num2 =parseInt(22.6);//22
var num3= parseInt(“”);//NaN
var num4 = parseInt(“ddd12”);// NaN
var num5 = parseInt(‘124dd’);//124
var num6 = parseInt(‘0xA’);//10
var num7 = parseInt(‘070’);//八進制 56
var num8= parseInt(‘70‘);//十進制 70
var num9= parseInt(‘0xf’);//十六進制 15
也可以明確指定要轉換的進制數,只要在第二個參數傳入即可
var num1= parseInt(‘0xaf’,16);// 十六進制175
var num2= parseInt(‘af’,16);// 十六進制175 指定進制,就可以不帶0x
var num3= parseInt(‘af’);// 單純字符‘af‘,返回NaN
var num4 = parseInt(‘10’,2);// 2 二進制解析
var num5 = parseInt(‘10’,8);// 8 八進制解析
var num6 = parseInt(‘10’,10);// 10 十進制解析
var num7 = parseInt(‘10’,16);// 16 十六進制解析
var num8 = parseInt(‘010’);// 8 按八進制
var num8 = parseInt(‘010’,8);// 8 按八進制
var num9 = parseInt(‘010’,10);// 10 按十進制
parseFloat轉換規則
parseFloat 和parseInt大部分類似,也是從第一個字符開始解析。但是有如下特點
1、 只有第一個小數點有效,第二個小數點無效,因此后面字符串將被忽略
2、 parseFloat只解析十進制,不解析八進制和十六進制,也就是說他會把010解析成10,0xa解析成0
例子:
var num1= parseFloat(‘1456dfd’);// 1456
var num2= parseFloat (‘0xa’);// 0
var num3= parseFloat (’22.5’);//22.5
var num4 = parseFloat (‘1.2.3’);// 1.2
var num5 = parseFloat (‘098.5’);//98.5
var num6 = parseFloat (‘3.21e7’);// 3.2100000
String 轉換規則
在javascript中的基本數據類型中大部分都有toString方法,但是null和undefined沒有。
數值的toString方法可以傳入基數:
var num =10;
alert(num.toString());//’10’
alert(num.toString(2));//’1010’
alert(num.toString(8));//’12’
alert(num.toString(10));//’10’
alert(num.toString(16));//’a’
基於null和undefined沒有toString方法,可以使用String(),規則如下:
1、 如果值有toString方法,則調用該方法
2、 如果是null則返回”null”
3、 如果是undefined,則返回’undefined’
結束語
至此我們復習了javascript中的大部分轉換規則和方法。以此作為記錄,忘記了還可以看看。
參考文章:http://www.cnblogs.com/enshjiang/archive/2012/03/17/2404149.html
如果覺得不錯的話,請點擊下推薦,(*^__^*) !!
轉載請注明出處:http://www.cnblogs.com/enshjiang/archive/2012/03/20/2407484.html