Js的數據類型以及相關函數

下圖是js的數據類型導圖,後面是重點類型的相關介紹:

上圖中部分數據類型的說明

1. undefined:在使用var聲明變量聲明但未對其初始化時,這個變量的值就是undefined.

var msg;
alert(msg);//聲明但未初始化,結果是undefined
alert(msg1);//既沒有聲明也沒有初始化,也返回undefined

2. null:表示一個空對象指針。

alert(typeof null);//object

實際上,undefined是派生自null的,js規定它們兩個值在相等性測試要返回true。

alert(undefined == null);//true

3. Number類型的相關函數:有3個函數可以把非數值轉換成數值Number()parseInt()parseFloat()

  3.1 Number()

  • 如果是布爾值,true和false將被轉換成1和0
  • 如果是數字,原樣返回
  • 如果是null,返回0
  • 如果是undefined,返回0
  • 如果是數字字符串
    • 若字符串中只有數字,將會被轉化成十進制數(如果包括0x開頭的有效字符串,也會轉爲10進制),且去掉前導0,例如"123"轉爲123,"0123"轉爲123
    • 如果是空字符串,則返回0
    • 除了上面的兩種字符串以外,其餘字符串都是NaN
  • 如果是引用類型對象,則調用對象的valueOf()方法,然後按照上面的過程轉換返回的值,如果轉換的結果是NaN,則調用對象的toString()方法,然後按照上面字符串的轉換方式轉換。
        console.log(Number(true));//1
        console.log(Number(null));//0
        console.log(Number(undefined));//NaN
        console.log(Number("001111"));//1111
        console.log(Number(""));//0
        console.log(Number("你好"));//NaN
        console.log(Number(new Object()));//NaN

  3.2 parseInt()

  • 如果parseInt轉換的字符串第一個字符是數字字符,會繼續解析第二個字符,直到遇到一個非數字字符。
  • 如果字符串以0x開頭會按照十六進制來轉換。
  • parseInt還有第二個參數,可以按照指定進制數去轉換。
        console.log(parseInt("1234hello"));//1234
        console.log(parseInt(""));//NaN
        console.log(parseInt("0xa"));//10
        console.log(parseInt("22.2"));//22
        console.log(parseInt("070"));//70
        console.log(parseInt("AF"));//NaN
        console.log(parseInt("0xb",16));//11
        console.log(parseInt("AF",16));//175
        console.log(parseInt("10",2));//2
        console.log(parseInt("10",8));//8
        console.log(parseInt("10",10));//10
        console.log(parseInt("10",16));//16

  3.3 parseFloat()

  • parseFloat與parseInt的解析方式一致,只不過會多解析一個小數點,但是遇到第二個小數點就不會再解析了。
  • parseFloat轉換16進制格式的字符串始終都會被轉換成0.
        console.log(parseFloat("123hello"));//123
        console.log(parseFloat("0xA"));//0
        console.log(parseFloat("22.2"));//22.2
        console.log(parseFloat("22.22.22"));//22.22
        console.log(parseFloat("0201.2"));//201.2
        console.log(parseFloat("3.1415e7"));//31415000

4. String類型相關的toString()方法

  • 數值、布爾值、對象和字符串值都有一個toString()方法,但是null和undefined值沒有這個方法。如果用undefined和null調用toString()方法,會報錯Uncaught TypeError: Cannot read property 'toString' of undefined或者Uncaught TypeError: Cannot read property 'toString' of null
  • toString()還可以再傳一個參數,可以通過這個參數控制toString方法以二進制、八進制、十六進制等方法表示字符串。
        console.log(num.toString());//10
        console.log(num.toString(2));//1010
        console.log(num.toString(8));//12
        console.log(num.toString(10));//10
        console.log(num.toString(16));//a
  • 當不知道一個值是不是null或者undefined的情況下,可以使用String()將這個值轉換爲字符串。String()會將null和undefined轉成"null"和"undefined"。
        console.log(String(10));//10
        console.log(String(true));//true
        console.log(String(null));//null
        console.log(String(undefined));//undefined

5. Objecr類型相關方法

  • constructor:構造函數。用於創建當前對象的函數。
  • hasOwnProperty(propertyName):檢查某個屬性再當前對象實例(注意是實例不是原型)中是否存在。
  • isPrototypeOf(object):用於檢查當前對象是否是當前對象的原型。
  • propertyIsEnumerable(propertyName):用於檢查某個屬性是否能用for-in語句來枚舉。
  • toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應。
  • toString():返回對象的字符串表示。
  • valueOf():返回對象的字符串、數值或布爾值表示。

注意:toLocaleString()和toString()的區別:再打印一些信息的字符串上可能會收到地區的影響,例如打印時間:

        console.log(obj.toLocaleString());//2018/12/23 下午9:09:23
        console.log(obj.toString());//Sun Dec 23 2018 21:09:23 GMT+0800 (中國標準時間)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章