點燈坊

學而時習之,不亦悅乎

使用 isEmpty() 判斷是否為 Empty 值 ?

Sam Xiao's Avatar 2019-08-09

Ramda 提供了 empty() 回傳各型別的 Empty 值,同時也提供了 isEmpty() 判斷是否為 Empty 值。

Version

macOS Mojave 10.14.5
VS Code 1.35.1
Quokka 1.0.232
Ramda 0.26.1

Ramda

isEmpty()
a -> Boolean
根據 empty() 判斷是否為 empty 值

import { isEmpty } from 'ramda';

isEmpty(''); // ?
isEmpty({}); // ?
isEmpty([]); // ?
isEmpty({ length: 0 }); // ?
isEmpty(null); // ?
isEmpty(undefined); // ?

也因為是根據 empty() 判斷,所以 ''{}[] 都回傳 true

第 6 行

isEmpty({ length: 0 }); // ?

儘管是 length 的 array-like object,isEmpty() 並無法判斷,由於與 [] 不等,因此回傳 false

第 7 行

isEmpty(null); // ?

null 語意為 empty object,所以 isEmpty() 要回傳 true 也屬合理。

empty() 已經認定 empty object 為 {},由於與 {} 不等,因此回傳 false

第 8 行

isEmpty(undefined); // ?

undefined 在語義上是否為 empty 比較爭議,但因為 isEmpty() 是根據 empty() 判斷,所以只要不是 ''{}[],都回傳 false

isempty000

Conclusion

  • 由於 isEmpty() 基於 empty(),只要不是 ''{}[],當視為 false
  • 若要判斷 undefinednull,要使用 isNil()

Reference

Ramda, isEmpty()
Ramda, isNil()