JS數據類型轉換小計
原始類型程序員
對象函數
7.Objectcode
原始類型轉換對象
數值:轉換後仍是原來的值ip
console.log(Number(123)) //123
字符串
字符串:若是能夠被解析爲數值,則轉換爲相應的數值,不然獲得NaN.空字符串轉爲0編譯器
console.log(Number('123')) //123
string
console.log(Number('123abc')) //NaN
io
console.log(Number('')) //0
console
布爾值:true轉換爲1,false轉換爲0
console.log(Number(true)) //1
console.log(Number(false)) //0
undefined:轉換爲NaN
console.log(Number(undefined)) //NaN
null:轉換爲0
console.log(Number(null)) //0
對象類型轉換
valueOf
方法,若是該方法返回原始類型的值(數值,字符串和布爾),則直接對該值使用Number
方法,再也不進行後續步驟。valueOf
方法返回複合類型的值,再調用對象自身的toString
方法,若是toString
方法返回原始類型的值,則對該值使用Number
方法,再也不進行後續步驟。toString
方法返回的是複合類型的值,則報錯。console.log(Number({a:1})) //NaN
原理流程:
a.valueOf() //{a:1}
a.toString() //"[object Object\]"
Number("[object Object]") //NaN
原始類型轉換
數值:轉爲相應的字符串
字符串:轉換後仍是原來的值
布爾值:true轉爲'true',false轉爲'false'
undefinde:轉爲'undefined'
null:轉爲'null'
對象類型轉換
toString
方法,若是toString
方法返回的是原始類型的數值,則對該值使用string方法,再也不進行如下步驟。toString
方法返回的是複合類型的值,再調用valueOf
方法,若是valueOf
方法返回的是原始類型的值,則對該值使用String
方法,再也不進行如下步驟。valueOf
方法返回的是複合類型的值,則報錯。原始類型轉換
undefined:轉爲false
null:轉爲false
0:轉爲false
NaN:轉爲false
''(空字符串):轉爲false
以上通通都轉爲false,其它轉爲true
在js中,當運算符在運算時,若是兩邊數據不統一,CPU就沒法計算,這時咱們編譯器會自動將運算符兩邊的數據作一個數據類型轉換,轉成同樣的數據類型再計算.這種無需程序員手動轉換,而由編譯器自動轉換的方式就稱爲隱式轉換
typeof underfined = 'ndefined'
typeof null = 'object'
typeof Boolean = 'function'
typeof Number = 'function'
此類問題中:+ 分爲兩種狀況字符串鏈接符:+ 號兩邊有一邊是字符串,會把其它數據類型調用String()方法轉換成字符串而後拼接。
算術運算符:+ 號兩邊都是數字,會把其它數據調用Number()方法轉換成數字而後作加法運算
console.log(1 + true); //算書運算符:1 + Number(true) = 1 + 1 = 2
console.log(1 + 'true'); //字符串鏈接符:String(1) + 'true' = '1' + 'true' = '1true'
console.log(1 + undefined)//算書運算符:1 + Number(undefined) = 1 + 0 = 1
console.log(1 + null)//算書運算符:1 + Number(null) = 1 + 0 = 1