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來判斷,還可以使用instanceof。instanceof運算子需要指定乙個建構函式,或者說指定乙個特定的型別,它用來判斷這個建構函式的原型是否在給定物件的原型鏈上。另:用typeof檢測建構函式建立的number,string,boolean都返回object 基本資料型別中:null。引用資料型別中的:array,object,date,regexp。不可以用typeof檢測。都會返回小寫的object
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 判斷...