JavaScript數據類型

數據類型

JS中存在5種簡單數據類型:Undefined、Null、Boolean、Number和String。還有一種複雜數據類型——Object。
全部的值最終都將是上述6種數據類型之一。git

typeof 操做符

返回一個表明變量的數據類型的字符串github

  1. 'undefined'——若是這個值未定義
  2. 'boolean'——若是這個值是布爾值
  3. 'string'——若是這個值是字符串
  4. 'number'——若是這個值是數值
  5. 'object'——若是這個值是對象或null
  6. 'function'——若是這個值是函數

Undefined 數據類型

該類型只有一個值即 undefined。當一個變量被定義可是未賦值,則其值爲 undefined
當使用typeof的時候,未定義變量和未聲明變量都爲 undefinedbash

let a;
typeof a // undefined
typeof b // undefined
複製代碼

Null 數據類型

該類型只有一個值即 null,其含義爲空對象指針,因此 typeof nullobject函數

Boolean 數據類型

當其餘類型轉換爲Boolean類型時,具備如下對應關係:測試

數據類型 轉換爲true的值 轉換爲false的值
Boolean true false
String 任何非空字符串 空字符串(即"")
Number 任何非零數字值 0和NaN
Object 非null的對象 null
Undefined 由於只有一個值永遠時false undefined

Number 數據類型

整數

存在8進制,以0開頭,若是0後的字面量超出8進制則做爲10進制,嚴格模式下不存在8進制 存在16進制,以0x開頭ui

浮點數

保存浮點數的空間時保存整數值的兩倍。因此1.0會被轉換爲1 作浮點數的一些測試的時候須當心,例如0.1 + 0.2 === 0.3 // falsespa

數值範圍

最大最小值分別保存在:Math.MAX_VALUE Math.MIN_VALUEprototype

NaN

即非數值(Not a Number)其有兩個特色:設計

  1. 任何設計NaN的操做都返回NaN
  2. NaN與任何值都不相等,包括自身

isNaN()

該方法接受一個任意數據類型的參數,返回布爾值表明該參數是不是 非數值指針

當參數是簡單數據類型的時候,方法會將參數數值化,若是成功則返回false,不然返回true

當參數是對象時,會首先調用對象的valueOf()方法,而後肯定該方法的返回值是否能夠轉換爲數值,若是不能,則基於這個返回值的toString()方法再判斷

數值轉換

能夠將非數值轉換數值,有如下三個方法:

Number()
parseInt()
parseFloat()
複製代碼

Number()

  1. true轉1,false轉0
  2. 數字原樣返回(包括進制,8,16)
  3. null轉0
  4. undefined轉NaN
  5. 若是是空字符串轉0,若是是數字的字符串('123'能夠可是'x123'不能夠)則轉數字,不然轉NaN,16進制字符串轉16進制轉換十進制後的數字,八進制忽略前導零
  6. 若是是對象則先調用valueOf()方法,若是返回基本數據類型則走以上原則返回,若是返回一個對象則調用toString()方法走以上原則,且不遞歸處理兩個方法返回的值

parseInt

其工做機制是先去除字符串前面的空格,找到第一個非空格字符,若是該字符爲不是數字字符或者正負號,則返回NaN,若是解析到數字或正負號則接着匹配,且測試中依舊不能識別八進制,可是能夠識別16進制,因此須要第二個參數來肯定返回的數字的進制

parseFloat

與parseInt功能類似,可是值得注意的是會忽略前導零後16進制永遠都解析成0,因此parseFloat只能解析十進制數值

String 數據類型

字符串是不可變的,一旦建立,想要修改只能將原來的銷燬

除了null和undefined,其餘數據類型都具備toString方法,並且在Number類型調用toString方法時,能夠加入一個進制參數來獲取對應的進制的字符串。

Object 數據類型

Object的原型鏈上有幾個基本的屬性和方法:

constructor // 該屬性保存了建立當前對象的函數
hasOwnProperty(propertyName) // 用於檢查給定的屬性在當前對象的實例中而不是在原型鏈上,參數爲字符串
isPrototypeOf(object) // 用於檢測傳入的對象是不是當前對象的原型
prototypeIsEnumerable(prototypeName) // 用於檢測給定的屬性是否可以用 for-in 來枚舉
toLocaleString() // 返回對象的字符串表示,和執行上下文環境的地區對應
toString() // 返回對象的字符串表示
valueOf() // 返回對象的字符串、數值或布爾值表示。一般與toString()方法的返回值相同
複製代碼

持續更新在github

相關文章
相關標籤/搜索