1、類型轉換web
js的取值很是靈活,好比:在js程序中,當js指望用一個布爾值的時候,你能夠提供任意類型的值,js將根據須要自動轉換類型。一樣,其餘類型也適用。js的類型轉換分爲三大類:算法
原始值到原始值的轉換數組
原始值到對象的轉換瀏覽器
對象到原始值的轉換函數
一、原始值到原始值的轉換對象
(1)原始值到原始值的轉換相對簡單,分爲:字符串
全部原始值轉換爲布爾值string
全部原始值轉換爲字符串構造函數
全部原始值轉換爲數字程序
下表列出了原始值之間的轉換:
以上,除了undefined、null、「」、0、-0、NaN轉換爲布爾值爲false外,其餘的值包括對象(數組、函數)都轉爲true。全部原始值轉換爲字符串的情形也以明肯定義。
轉換爲數字時,比較微妙,那些以數字表示的字符串能夠直接轉換爲數字,也容許在開始和結尾處帶有空格,能夠直接轉換爲數字。
但凡在開頭和結尾處,都含有任意非空格字符都不會轉換爲數字,都會轉換爲NaN。
(2)原始值之間經過什麼方法轉換呢
一、Number(para)
將任何形式的值轉換成數字類型,轉不成數字就是NaN,看起來不是數字的就轉不成數字
Number(null) //0
二、Boolean(para)
將任何類型的值轉換成布爾類型的值
Boolean(null) //false
三、String(para)
將任何形式的值都轉換成字符串
String(null) //"null"
四、parseInt(para,radix)
將數字、字符串轉換成整數
從數字位開始看,看到非數字位截止,返回數字位,轉不成整數會返回NaN
開頭必須是數字,不然轉換爲NaN
string:要轉換的值
radix:基低,
將string當作radix進制,再轉換成10進制(其餘進制轉換成十進制)
五、parseFloat(para)
將para轉換成浮點型(正常的數字)
從數字位開始看,看到除了點以外的非數字位截止,返回數字位包括點
開頭必須是數字,不然是nan
沒有進制轉換功能
六、toString(radix)
demo.toString(8)
radix:以十進制爲基低轉換成目標進制 (把十進制轉換成其餘進制)
null undefined沒有toString()方法
經過以上方法進行的類型轉換,也稱爲顯示類型轉換。
二、原始值到對象的轉換
原始值到對象的轉換也很是簡單,原始值經過調用String()、Number()、Boolean()構造函數,轉換爲它們各自的包轉對象。
null和undefined屬於裏外,它們不能轉爲對象類型,一般會發生TypeError的錯誤,不會執行正常的轉換。
三、對象到原始值得轉換
(1)對象到布爾值的轉換很是簡單:
全部的對象(包括數組和函數)都轉換爲true。對於包裝對象亦是如此:new Boolean(false)是一個對象而不是一個值,它將轉換爲true。
對象到字符串的轉換和對象到數字的轉換是經過調用toString()和valueOf()來實現的。這裏提到的轉換規則只適用於本地對象。對於宿主對象(web瀏覽器定義的對象)根據各自的算法能夠轉換爲字符串和數字。
toString():將任何形式的值變成字符串。
valueOf():將對象轉換爲它表示的原始值。
(2)對象到字符串的轉換要經歷的步驟:
一、若是對象具備toString()方法,則調用這個方法。若是返回值是一個原始值,js會將它轉換成字符串(這個值自己不是字符串的話)。
二、若是對象沒有toString()方法,或者這個方法並不返回一個原始值,那麼js會調用valueOf()方法。若是有這個方法的話,js會調用它。若是返回的是原始值,js會將這個值轉換爲字符串。(須要轉的話)
三、不然,經過這倆個方法js都沒法得到一個原始值的話,那麼就會拋出一個類型錯誤異常。沒法發生轉換。
(3)對象到數字的轉換過程:
跟對象轉換爲字符串不同,js會首先嚐試使用valueOf()方法
一、若是對象具備valueOf()方法,就調用這個方法。若是返回結果是一個原始值,js會將它轉換爲數字。(這個值自己不是數字的話)
二、不然,若是對象具備totring()方法,就調用它。若是返回結果是一個原始值,js會將他轉爲數字。