js資料型別及判斷

田小菜發表於2019-04-28

一,js的資料型別

資料型別分為兩種

  1. 基本資料型別:以值型別儲存在棧記憶體裡
  2. 複雜資料型別:以引用地址儲存在棧記憶體裡,實際值存在堆記憶體裡;

基本資料型別

包括:number;string;boolean;undefined;null;symbol(ES6新增型別)

複雜資料型別

包括:object;array;function;map(ES6新增型別);set(ES6新增型別)

二,當只判斷基本資料時

  1. 只需要:typeof 簡單型別 ==> 得到你判斷當型別
  2. 注意: typeof null === 'object'
  3. 注意: typeof Function === 'function'

三,當只判斷複雜資料型別時

  1. 可用instanceof。但是不可靠
  2. 物件 instanceof 建構函式 ==> 判斷建構函式的protoytpe屬性所指的物件 是否在物件的原型鏈上;
eg1:
    function Person(){}
    var p = new Person();
    p instanceof Person // true
eg2:
    p instanceof Object // true
eg3:
    [1,2] instanceof Object // true
eg4:
    [1,2] instanceof Array // true
    Array.isArray([]) // true 只判斷為陣列時可用
複製程式碼
  1. 由上可知。用instanceof判斷也不準確

四,大招:準確判斷所有型別

// 利用call的第一個引數可以轉換為他的原始建構函式型別的原理
var ele;
Object.prototype.toString.call(ele).slice(8, -1)
複製程式碼
第一篇文章。希望大家多多指教。

相關文章