javascript類型轉換


Javascript類型轉換:

轉換為:字符串 數字 布爾值 對象
undefined “undefined” NaN false throws TypeError
null “null” 0 false throws TypeError
true “true” 1   new Boolean(true)
false “false” 0   new Boolean(false)
“”空字符串   0 false new String(“”)
“1.2”(非空,數字)   1.2 true new String(“1.2”)
“one”(非空,非數字)   NaN true new String(“one”)
0 “0”   false new Number(0)
-0 “0”   false new Number(-0)
NaN “NaN”   false new Number(NaN)
Infinity “Infinity”   true new Number(Infinity)
-Infinity “-Infinity”   true new Number(-Infinity)
1(無窮大,非零) “1”   true new Number(1)
{}(任意對象)     true  
[](任意數組) “” 0 true  
[9](1個數字對象) “9” 9 true  
[‘a’](其他數組) 使用join()方法 NaN true  
function(){}(任意函數)   NaN true  

 

轉換和相等性

null==undefined             //這兩值被認為相等

“0”=0                            //在比較之前字符串轉換成數字

0==false                         //在比較之前布爾值轉換成數字

“0”==false                  //在比較之前字符串和布爾值都轉換成數字

“==”等於運算符在判斷兩個值是否相等時會進行類型轉換,但一個值轉換為另一個值並不意味着兩個值相等。而“===”恆等運算符在判斷相等時並未做任何類型轉換。

 

顯示類型轉換

使用Boolean()、Number()、String()或Object()函數進行顯示類型轉換。

例如:

Number(“1”)                     //3

String(false)                           //”false”,等價於false.toString()

【另外注意:除了null、undefined之外的任何值都有toString()方法】

Boolean([])                           //true

Object(3)                              //new Number(3)

Number類定義的toString()方法可以接收表示轉換基數(radix)【轉換基數指二進、八進制、十六進制】,不指定則轉換規則默認為十進制,radix取值范圍為2~36之間。如果通過Number()轉換函數傳入一個字符串,它會試圖將其轉換為一個整數或浮點數直接量,這個方法只能基於十進制進行轉換,並且不能出現非法的尾隨字符。parseInt()和parseFloat()函數(它們是全局函數,不從屬於任何類的方法)則靈活點,parseInt()只解析整數,而parseFloat()則可以解析整數和浮點數。如果字符串前綴是“0x”或者“0X”,parseInt()將其解釋為十六進制數,parseInt()和parseFloat()都會跳過任意數量的前導空格,盡可能解析更多數值字符,並忽略后面的內容。如果第一個非空字符是非法的數字直接量,將返回NaN

例如:

parseInt(”3 blind mice”)                //3

parseFloat(“3.14 meters”)                //3.14

parseInt(“0xFF”)                             //255

parseFloat(“.1”)                             //0.1

parseInt(“.1”)                                //0

parseInt()可以接收第二個參數,這個參數指定數字轉換的基數,合法的取值范圍是2~36

 

 

隱式類型轉換

js中的某些運算符會做隱式的類型轉換。如果”+”運算符的一個操作數是字符串,它將會把另外一個操作數轉換為字符串。一元“+”運算符將其操作數轉換為數字。一元“!”運算符將其操作數轉換為布爾值並取反。

例如:

x+""           //等價於String(x)

+x             //等價於Number(x),也可以寫成x-0

!!x            //等價於Boolean(x)

 

 

對象轉換為原始值

對象到布爾值的轉換非常簡單:所有對象(包括數組和函數)都轉換為true。

所有的對象繼承了兩個轉換方法:

1、toString():它的作用是返回一個反映這個對象的字符串。默認的toString()方法並不會返回一個有趣的值

2、valueOf():如果存在任意原始值,它就默認將對象轉換為表示它的原始值。對象是復合值,而且大多數對象無法真正表示為一個原始值,因此默認的valueOf()方法簡單地返回對象本身,而不是返回一個原始值。

js中對象到字符串的轉換經過如下步驟:

①如果對象有toString()方法,則調用這個方法。如果返回一個原始值,js將這個值轉換為字符串(如果本身不是字符串),並返回這個字符串結果

②如果對象沒有toString()方法,或者這個方法返回的並不是一個原始值,那么js會調用valueOf()方法(如果存在此方法)。如果返回值是原始值,js將這個值轉換為字符串(如果本身不是字符串的話),並返回這個字符串結果

③否則,js無法從toString()或valueOf()獲得一個原始值,因此這時它將拋出一個類型錯誤異常

js中對象到數字的轉換過程中,js做了同樣的事情,只是它會首先嘗試使用valueOf()方法

①如果對象具有valueOf()方法,或者返回一個原始值,則js將這個原始值轉換為數字(如果需要的話)並返回、這個數字

②否則,如果對象具有toString()方法,后者返回一個原始值,則js將其轉換並返回

③否則,js拋出一個類型錯誤異常

 


免責聲明!

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



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