基本類型有哪幾種?null 是對(duì)象嗎?基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型存儲(chǔ)有什么區(qū)別?

  • 基本類型有6種,分別是undefined,null,bool,string,number,symbol(ES6新增)
  • 雖然 typeof null 返回的值是 object,但是null不是對(duì)象,而是基本數(shù)據(jù)類型的一種。
  • 基本數(shù)據(jù)類型存儲(chǔ)在棧內(nèi)存,存儲(chǔ)的是值。
  • 復(fù)雜數(shù)據(jù)類型的值存儲(chǔ)在堆內(nèi)存,地址(指向堆中的值)存儲(chǔ)在棧內(nèi)存。當(dāng)我們把對(duì)象賦值給另外一個(gè)變量的時(shí)候,復(fù)制的是地址,指向同一塊內(nèi)存空間,當(dāng)其中一個(gè)對(duì)象改變時(shí),另一個(gè)對(duì)象也會(huì)變化。
/**
 * isComplex判斷是否是復(fù)雜數(shù)據(jù)類型,如果是返回true,否則返回false
 * @param {*} data 需要被判斷類型的數(shù)據(jù)
 */

function isComplex(data) {
    if (data && (typeof data === 'object' || typeof data === 'function')) {
        return true;
    }
    return false;
}

封裝一個(gè)獲取變量準(zhǔn)確類型的函數(shù)

  • 首先 typeof 能夠正確的判斷基本數(shù)據(jù)類型,但是除了 null, typeof null輸出的是對(duì)象。
  • 但是對(duì)象來(lái)說(shuō),typeof 不能正確的判斷其類型, typeof 一個(gè)函數(shù)可以輸出 'function',而除此之外,輸出的全是 object,這種情況下,我們無(wú)法準(zhǔn)確的知道對(duì)象的類型。

所以封裝了一個(gè)獲取變量準(zhǔn)確類型的函數(shù)

function gettype(obj) {
  var type = typeof obj;

  if (type !== 'object') {
    return type;
  }
  //如果不是object類型的數(shù)據(jù),直接用typeof就能判斷出來(lái)

  //如果是object類型數(shù)據(jù),準(zhǔn)確判斷類型必須使用Object.prototype.toString.call(obj)的方式才能判斷
  return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
}

使typeof判斷類型

console.log(
    typeof 123, //"number"
    typeof 'dsfsf', //"string"
    typeof false, //"boolean"
    typeof [1,2,3], //"object"
    typeof {a:1,b:2,c:3}, //"object"
    typeof function(){console.log('aaa');}, //"function"
    typeof undefined, //"undefined"
    typeof null, //"object"
    typeof new Date(), //"object"
    typeof /^[a-zA-Z]{5,20}$/, //"object"
    typeof new Error() //"object"
);

null 與 undefined的區(qū)別

  • null 是 javascript 的關(guān)鍵字,表示一個(gè)特殊值,常用來(lái)描述"空值",typeof 運(yùn)算返回"object",所以可以將 null 認(rèn)為是一個(gè)特殊的對(duì)象值,含義是"非對(duì)象"。

  • undefined 是預(yù)定義的全局變量,他的值就是"未定義", typeof 運(yùn)算返回 "undefined"

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容