JS數據類型以及數據類型轉換

JS數據類型轉換小計
數據類型
  • 最新的ECMAScript標準定義了7種數據類型

原始類型程序員

  1. Boolean
  2. Null
  3. Undefined
  4. Number
  5. String
  6. Symbol

對象函數

7.Objectcode

顯式類型轉換
  • Number函數

原始類型轉換對象

數值:轉換後仍是原來的值ip

console.log(Number(123)) //123字符串

字符串:若是能夠被解析爲數值,則轉換爲相應的數值,不然獲得NaN.空字符串轉爲0編譯器

console.log(Number('123')) //123string

console.log(Number('123abc')) //NaNio

console.log(Number('')) //0console

布爾值: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

對象類型轉換

  1. 先調用對象自身的valueOf方法,若是該方法返回原始類型的值(數值,字符串和布爾),則直接對該值使用Number方法,再也不進行後續步驟。
  2. 若是valueOf方法返回複合類型的值,再調用對象自身的toString方法,若是toString方法返回原始類型的值,則對該值使用Number方法,再也不進行後續步驟。
  3. 若是toString方法返回的是複合類型的值,則報錯。

    console.log(Number({a:1})) //NaN

    原理流程:

    a.valueOf() //{a:1}

    a.toString() //"[object Object\]"

    Number("[object Object]") //NaN

  • String函數

    原始類型轉換

    數值:轉爲相應的字符串

    字符串:轉換後仍是原來的值

    布爾值:true轉爲'true',false轉爲'false'

    undefinde:轉爲'undefined'

    null:轉爲'null'

對象類型轉換

  1. 先調用toString方法,若是toString方法返回的是原始類型的數值,則對該值使用string方法,再也不進行如下步驟。
  2. 若是toString方法返回的是複合類型的值,再調用valueOf方法,若是valueOf方法返回的是原始類型的值,則對該值使用String方法,再也不進行如下步驟。
  3. 若是valueOf方法返回的是複合類型的值,則報錯。
  • Boolean函數

原始類型轉換

undefined:轉爲false

null:轉爲false

0:轉爲false

NaN:轉爲false

''(空字符串):轉爲false

以上通通都轉爲false,其它轉爲true

隱式類型轉換
在js中,當運算符在運算時,若是兩邊數據不統一,CPU就沒法計算,這時咱們編譯器會自動將運算符兩邊的數據作一個數據類型轉換,轉成同樣的數據類型再計算.這種無需程序員手動轉換,而由編譯器自動轉換的方式就稱爲隱式轉換
  • typeof

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

  • 大坑&%……&¥&%……(&))已吐。。。。。
相關文章
相關標籤/搜索