[英]Why an object where all its properties are undefined is not listed as empty?
您的對象a
不為空,它具有2個定義的屬性,即b
和c
,其值是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.