簡體   English   中英

為什么所有屬性均未定義的對象未列為空?

[英]Why an object where all its properties are undefined is not listed as empty?

隨着Lodash下划線 ,我可以知道,如果一個對象是空的。

const a = {};

我想了解的是為什么它不能將未定義其所有屬性的對象識別為空。

例:

const a = {
  b: undefined,
  c: undefined
};

這個問題不是lodash的重復:檢查對象是否為空 :我不是在尋找一種方法來驗證它是否具有未定義的屬性為空,我想了解為什么即使具有未定義值的屬性也並非為空對象。

您的對象a 不為空,它具有2個定義的屬性,即bc ,其值是undefined

您在評論之一中說:

我完全理解,如果它具有屬性,但是其屬性沒有值,為什么不說該對象為空。

但事實是,這些屬性沒有“沒有值”,它們的值是undefined undefined是一個完全有效的值,就像null"" (空字符串)和NaN

在鏈接的文檔中回答了您的問題。 如果在對象上調用了函數,則它們會檢查長度。 如果length> 0,則不認為該對象為空。

const a = {
  b: undefined,
  c: undefined
};

console.log(Object.keys(a).length); // 2

下划線文檔

如果可枚舉對象不包含任何值(不包含可枚舉的自身屬性),則返回true。 對於字符串和類似數組的對象,_.isEmpty檢查length屬性是否為0。

Lodash文件

檢查value是否為空對象,集合,映射或集合。

如果對象沒有自己的可枚舉字符串鍵屬性,則認為它們為空。

如果數組的值(例如,參數對象,數組,緩沖區,字符串或類似jQuery的集合)的長度為0,則認為它們為空。同樣,如果映射和集合的大小為0,則認為它們為空。

為此,請想象一個代表您對象的文件櫃。 盡管抽屜中可能沒有任何物品,但實際上,櫥櫃本身仍包含三個抽屜。 根據使用_.isEmpty()的上下文,這可能是重要的信息,也可能不是。

在此處輸入圖片說明

暫無
暫無

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

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