【问题标题】:How to check if a value is null or undefined in JavaScript (ES2020) [duplicate]如何在 JavaScript(ES2020)中检查值是否为空或未定义 [重复]
【发布时间】:2021-05-09 10:13:55
【问题描述】:

有没有比使用新的 ES10 功能(如 Nullish Coalescing)更短的方法来检查 JavaScript 中的值是 null 还是 undefined

(value !== null && value !== undefined)

还有其他问题,比如

  1. Detecting an undefined object property in JavaScript
  2. How to determine if variable is 'undefined' or 'null'
  3. Is there a standard function to check for null, undefined, or blank variables in JavaScript?

但它们都使用松散相等 (==)、使用 jQuery 或返回 false,即使值为 ""[]0

【问题讨论】:

  • value == null没有错
  • eslint 是否可以防止这种情况发生? eqeqeq ESLint 规则有 smart 选项来允许这种类型的使用:eslint.org/docs/rules/eqeqeq
  • 我猜还有((value ?? null) !== null)
  • @jcalz (value ?? null) !== null 可能有效,但非常奇怪。我不建议编写这样的代码,这只是混乱的根源。 value == null 简短、准确、众所周知且惯用语。 ES2020 对此没有任何改变。
  • @Bergi 同意!我不打算推​​荐它。

标签: javascript typescript ecmascript-6


【解决方案1】:

如果启用智能选项,eslint 不会为value == null 抛出错误

对于在eslint 配置中没有smart eqeqeq 规则的项目,

使用 Nullish Coalescing 有一种更短的方法。

(value ?? null) !== null

let value

// undefined
console.log((value ?? null) !== null)

// null
value = null
console.log((value ?? null) !== null)

// ''
value = ''
console.log((value ?? null) !== null)

// 0
value = 0
console.log((value ?? null) !== null)

// []
value = []
console.log((value ?? null) !== null)

【讨论】:

  • 不,(value ?? false) !== falsevalue === false 时失败。如果问题是“我们可以检查一个值是nullundefined 还是false?”那么确定。
  • 是的,不应包含false。谢谢
猜你喜欢
  • 2012-08-29
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 2011-02-03
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多