簡體   English   中英

null 是原始類型還是 object 類型?

[英]Is null a primitive type or object type?

https://developer.mozilla.org/en-US/docs/Glossary/Primitive在JavaScript中,primitive(原始值,原始數據類型)是不是object的數據,沒有方法。 原始數據類型有 6 種:string、number、bigint、boolean、undefined 和 symbol。 還有 null,它看似原始,但確實是每個 Object 的特例:並且任何結構化類型都由原型鏈從 null 派生而來。

但在 Javascript 的定義指南中,它說任何 Javascript 值不是數字、字符串、boolean、符號、null 或未定義的值是 object。

那么哪個是對的呢? null 是不是 object。

如有疑問,請閱讀官方規范,它本質上是 JavaScript 的上帝之言。

原始值是以下內置類型之一的成員:Undefined、 Null、Boolean 、Number、BigInt、String 和 Symbol; object 是內置類型 Object 的成員; function 是可調用的 object。通過屬性與 object 關聯的 function 稱為方法。

所以,是的, null是一個原始值。

可以看到null、Arrays,Object都是Object。

 console.log(typeof null); console.log(typeof []); console.log(typeof {});

如果你想像你想的那樣測試類型,你可能想看看這個。

 function getType(mixed){ if(mixed === null){ return 'null'; } else if(mixed instanceof Array){ return 'array'; } return typeof mixed; } class Test{ constructor(){ } method(){ return this; } } function ConstructorTest(){ let privateVarsOk; this.method = ()=>{ return this; } } const test = new Test; constructorTest = new ConstructorTest; console.log(getType(null)); console.log(getType('4')); console.log(getType(4)); console.log(getType(['a', 2, 'c'])); console.log(getType({})); console.log(getType(getType)); console.log(getType(function(){})); console.log(getType(()=>{})); console.log(getType(Test)); console.log(getType(test)); console.log(getType(ConstructorTest)); console.log(getType(constructorTest)); console.log(getType());

請注意class es 實際上是函數,因為它們沒有引入新的層次結構。

var nullVar=null;
console.log("Data type of nullVar is :"+ (typeof nullVar));

o/p;-nullVar的數據類型為:object

Null 是原始數據類型,但它返回 object... 所以,null 返回偽造的返回值..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM