在javascript中判斷類型

String

一個字符串始終是一個字符串,因此這一塊是很容易。除非使用new(new String)調用,不然typeof將返回「object」。因此也要包含那些可使用的字符串instanceof。javascript

// Returns if a value is a string
function isString (value) {
    return typeof value === 'string' || value instanceof String;
}
複製代碼

Number

From typeof more things than just an ordinary number will return "number" like NaN and Infinity. To know if a value really is a number the function isFinite is also required. 從類型更多的東西,而不單單是普通的數字將返回像NaN和無限的「數字」。要知道值是否真的是數字,函數isFinite也是必需的。java

// Returns if a value is really a number
function isNumber (value) {
    return typeof value === 'number' && isFinite(value);
}
複製代碼

Array

在javascript 數組中不是像java和其餘語言中那樣的真正數組。它們其實是對象,所以typeof將爲它們返回「對象」。要知道某些東西是否真的是一個數組,它的構造函數能夠與Array進行比較。編程

// Returns if a value is an array
function isArray (value) {
    return value && typeof value === 'object' && value.constructor === Array;
}

// ES5 actually has a method for this (ie9+)
Array.isArray(value);
複製代碼

Function

// Returns if a value is a function
function isFunction (value) {
    return typeof value === 'function';
}
複製代碼

Object

不少東西都是javascript中的對象。要知道值是不是能夠具備屬性並循環的對象,能夠將其構造函數與Object進行比較。它不適用於從類建立的對象,所以可使用instanceof運算符。數組

// Returns if a value is an object
function isObject (value) {
    return value && typeof value === 'object' && value.constructor === Object;
}
複製代碼

Null & undefined

大多數狀況下,您不須要顯式檢查null和undefined,由於它們都是假值。然而,要作到這一點,下面的功能就能夠了。bash

// Returns if a value is null
function isNull (value) {
    return value === null;
}

// Returns if a value is undefined
function isUndefined (value) {
    return typeof value === 'undefined';
}
複製代碼

Boolean

對於布爾值, typeof就足夠了,由於它返回true和false的「boolean」。編程語言

// Returns if a value is a boolean
function isBoolean (value) {
    return typeof value === 'boolean';
}
複製代碼

RegExp

RegExp是對象,所以惟一須要檢查的是構造函數是否爲RegExp。函數

// Returns if a value is a regexp
function isRegExp (value) {
    return value && typeof value === 'object' && value.constructor === RegExp;
}
複製代碼

Error

javascript中的錯誤與許多其餘編程語言中的「異常」相同。它們有幾種不一樣的形式,例如Error,TypeError和RangeError。一個instanceof語句對他們來講已經足夠了,但咱們還要確保咱們還檢查錯誤所具備的「message」屬性。ui

// Returns if value is an error object
function isError (value) {
    return value instanceof Error && typeof value.message !== 'undefined';
}
複製代碼

Date

日期實際上不是javascript中的數據類型。但要知道是否有某個Date對象,可使用instanceof進行檢查。this

// Returns if value is a date object
function isDate (value) {
    return value instanceof Date;
}
複製代碼

Symbol

// Returns if a Symbol
function isSymbol (value) {
    return typeof value === 'symbol';
}
複製代碼
相關文章
相關標籤/搜索