Javascript - typeof 的用法

使用typeof 來判斷型態,比較需要特別注意的是

1.判斷Array的寫法

2.null 會是object

3.undefined 還是undefined

var a = 3;
console.log(typeof a);  //  number

var b = "Hello";
console.log(typeof b);  //  string

var c = {};
console.log(typeof c);  //  object

var d = [];
console.log(typeof d);  //  object
console.log(Object.prototype.toString.call(d)); //  [object Array]

var e = false;
console.log(typeof e);  //  boolean

function Person(name){
  this.name = name;
}

console.log(typeof Person); //  function

var f = new Person("Jane");
console.log(typeof f);  //  object

console.log(typeof undefined);  //  undefined
console.log(typeof null); //  object

需要特別注意的是判斷Array的寫法,

如果直接用typeof去判斷 array的話,得到的型態是object

如果要判斷是不是陣列,要改用 Object.prototype.toString.call(陣列物件名稱)

var c = {};
var d = [];
//console.log(typeof d);  //  object
console.log(Object.prototype.toString.call(d)); //  [object Array]
console.log(Object.prototype.toString.call(c)); //  [object Object]

// 判斷是否為Array
console.log(Object.prototype.toString.call(d) === '[object Array]'); 
// true

// 判斷是否為物件 
console.log(Object.prototype.toString.call(c) === '[object Object]');
// true

執行結果