JavaScript中各種轉換規則記錄


閱讀目錄

前言

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM