1. 程式人生 > >typeof 的取值類型範圍和instanceof的區別

typeof 的取值類型範圍和instanceof的區別

一: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方法判斷是否為陣列