js資料型別判斷

2021-10-17 03:24:31 字數 4858 閱讀 6994

console.

log(

typeof

100,

//"number"

typeof

'abc'

,//"string"

typeof

false

,//"boolean"

typeof undefined,

//"undefined"

typeof

null

,//"object"

typeof[1

,2,3

],//"object"

typeof

,//"object"

typeof

function()

,//"function"

typeof

newdate()

,//"object"

typeof/^

[a-za-z]

$/,//"object"

typeof

newerror()

//"object"

typeof

newnumber

(100),

//'object'

typeof

newstring

('abc'),

// 'string'

typeof

newboolean

(true),

//'boolean'

);

基本資料型別中:number,string,boolean,undefined 以及引用資料型別中function,可以使用typeof檢測資料型別,分別返回對應的資料型別小寫字元。

另:用typeof檢測建構函式建立的number,string,boolean都返回object 基本資料型別中:null。引用資料型別中的:array,object,date,regexp。不可以用typeof檢測。都會返回小寫的object

除了使用typeof來判斷,還可以使用instanceof。instanceof運算子需要指定乙個建構函式,或者說指定乙個特定的型別,它用來判斷這個建構函式的原型是否在給定物件的原型鏈上。

console.

log(

100instanceof

number

,//false

'dsfsf'

instanceof

string

,//false

false

instanceof

boolean

,//false

undefined instanceof

object

,//false

null

instanceof

object

,//false[1

,2,3

]instanceof

array

,//true

instanceof

object

,//true

function()

instanceof

function

,//true

newdate()

instanceof

date

,//true/^

[a-za-z]

$/instanceof

regexp

,//true

newerror()

instanceof

error

//true

)

基本資料型別中:number,string,boolean。字面量值不可以用instanceof檢測,但是建構函式建立的值可以,如下:

var num =

newnumber

(123);

var str =

newstring

('dsfsf');

var boolean =

newboolean

(false

);

還需要注意null和undefined都返回了false,這是因為它們的型別就是自己本身,並不是object建立出來它們,所以返回了false。

constructor是prototype物件上的屬性,指向建構函式。根據例項物件尋找屬性的順序,若例項物件上沒有例項屬性或方法時,就去原型鏈上尋找,因此,例項物件也是能使用constructor屬性的。

如果輸出乙個型別的例項的constructor,就如下所示:

console.

log(

newnumber

(123

).constructor)

//ƒ number()

可以看到它指向了number的建構函式,因此,可以使用num.constructor==number來判斷乙個變數是不是number型別的。

var num  =

123;

var str =

'abcdef'

;var bool =

true

;var arr =[1

,2,3

,4];

var json =

;var

func

=function()

var und = undefined;

var nul =

null

;var date =

newdate()

;var reg =

/^[a-za-z]$/

;var error=

newerror()

;function

person()

var tom =

newperson()

;// undefined和null沒有constructor屬性

console.

log(

tom.constructor==person,

num.constructor==number,

str.constructor==string,

bool.constructor==boolean,

arr.constructor==array,

json.constructor==object,

func.constructor==function,

date.constructor==date,

reg.constructor==regexp,

error.constructor==error);

//所有結果均為true

除了undefined和null之外,其他型別都可以通過constructor屬性來判斷型別。

var tostring = object.prototype.tostring;

tostring.

call

(123);

//"[object number]"

tostring.

call

('abcdef');

//"[object string]"

tostring.

call

(true);

//"[object boolean]"

tostring.

call([

1,2,

3,4]

);//"[object array]"

tostring.

call()

;//"[object object]"

tostring.

call

(function()

);//"[object function]"

tostring.

call

(undefined)

;//"[object undefined]"

tostring.

call

(null);

//"[object null]"

tostring.

call

(new

date()

);//"[object date]"

tostring.

call

(/^[a-za-z]$/);

//"[object regexp]"

tostring.

call

(new

error()

);//"[object error]"

這樣可以看到使用object.prototype.tostring.call()的方式來判斷乙個變數的型別是最準確的方法。

function

gettype

(obj)

//如果不是object型別的資料,直接用typeof就能判斷出來

//如果是object型別資料,準確判斷型別必須使用object.prototype.tostring.call(obj)的方式才能判斷

return object.prototype.tostring.

call

(obj)

.replace

(/^\[object (\s+)\]$/

,'$1');

}

js判斷資料型別

1 typeof 形如 var x xx typeof x string 返回型別有 undefined string number boolean function object 缺點 對於object型別不能細分是什麼型別 優點 對空null的判斷 undefined 的應用 2 instanc...

js判斷資料型別

了解js的都知道,有個typeof 用來判斷各種資料型別,有兩種寫法 typeof typeof 如下例項 typeof 2 輸出 number typeof null 輸出 object typeof 輸出 object typeof 輸出 object typeof function 輸出 fu...

js判斷資料型別

1 判斷是否為陣列型別 2 判斷是否為字串型別 3 判斷是否為數值型別 isnan 變數 如果為true就是數字型別 注意這個函式一般針對數字型別來判斷是否值為nan,若變數為非數字型別,則先轉化為數字型別再做判斷,用此函式時,別忘考慮空串和空格 這倆轉化為數字是0 4 判斷是否為日期型別 5 判斷...