typeof 的取值類型範圍和instanceof的區別
阿新 • • 發佈:2018-12-17
一:js 判斷各種資料型別 typeof 幾種型別值 瞭解js的都知道, 有個typeof 用來判斷各種資料型別,有兩種寫法:typeof xxx ,typeof(xxx)
如下例項: typeof 2 輸出 number typeof null 輸出 object typeof {} 輸出 object typef [] 輸出 object typeof (function(){}) 輸出 function typeof undefined 輸出 undefined typeof '222' 輸出 string typeof true 輸出 boolean 這裡麵包含了js裡面的五種資料型別: number string boolean undefined object和函式型別 function
1.number
typeof(10);
typeof(NaN);
//NaN在JavaScript中代表的是特殊非數字值,它本身是一個數字型別。
typeof(Infinity);
2.boolean
typeof(true);
typeof(false);
3.string
typeof("abc");
4.undefined
typeof(undefined);
typeof(a);//不存在的變數
5.object
物件,陣列,null返回object
typeof(null);
typeof(window);
6.function
typeof(Array); typeof(Date);
7.symbol
typeof Symbol() // ES6提供的新的型別
二:js資料型別分為8種,5種基本型別,3種引用型別
1.基本(值)資料型別: Number:數字型別 String:字串型別 Boolean:布林型別 Null:空 Undefined:未定義 引用(物件)型別: Object:任意一種物件 Function:一種特別的物件(可執行) Array:一種特別的物件(數字下標,內部資料是有序的) 三、使用typeof和instanceof判斷資料型別 typeof:用於判斷基本資料型別,返回值型別是字串 instanceof:用於判斷物件的具體型別,返回值型別是Boolean ===:可以用來判斷,null和undefined (這兩種資料有一個共同特點是都是隻有一種情況,不像Boolean型別,可能是true,也可能是false);
//typeof使用例項:
var b=true;
console.log(typeof b);//'boolean'
var c="";
console.log(typeof c);//'String'
var d=1;
console.log(typeof d);//'Number'
var e,f=undefined;
console.log(typeof e,typeof f);//'undefined' 'undefined'
var a=null; console.log(typeof a);//'object'
var obj={}; console.log(typeof obj);//'object'
var arr=[1,2,3];
console.log(typeof arr);//'object'
var fn=function(){
alert("aaa");
}
console.log(typeof fn);//'function'
用instanceof 方法可以明顯的把null型別排除掉,同時對於物件型別他們本身就都是物件所以當匹配Object的時候返回的自然是true。 那最後怎樣區別array和object呢? console.log(obj instanceof Object&& (toString.call(obj) !== “[object Array]”)); 利用toString方法判斷是否為陣列