如何在 JavaScript 中检查 null 值?

新手上路,请多包涵

如何检查 JavaScript 中的空值?我写了下面的代码,但是没有用。

if (pass == null || cpass == null || email == null || cemail == null || user == null) {

    alert("fill all columns");
    return false;

}

以及如何在我的 JavaScript 程序中找到错误?

原文由 Mahdi_Nine 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

JavaScript 在检查“null”值方面非常灵活。我猜您实际上是在寻找空字符串,在这种情况下,这个更简单的代码将起作用:

 if(!pass || !cpass || !email || !cemail || !user){

它将检查空字符串( "" )、 nullundefinedfalse 以及数字 0NaN

请注意,如果您专门检查数字,则使用此方法遗漏 0 是一个常见错误,并且首选 num !== 0 (或 num !== -1~num (也检查 -1 )) 对于返回 -1 的函数,例如 indexOf )。

原文由 None 发布,翻译遵循 CC BY-SA 4.0 许可协议

要特别检查空 ,您可以使用:

 if (variable === null)

This test will ONLY pass for null and will not pass for "" , undefined , false , 0 ,或 NaN

此外,我还为每个“类假”值提供了绝对检查(一个会为 !variable 返回 true 的值)。

请注意,对于某些绝对检查,您需要实施 absolutely equals: ===typeof 的使用。

我在这里创建了一个 JSFiddle 来展示所有单独的测试工作

以下是每项检查的输出:

 Null Test:

if (variable === null)

- variable = ""; (false) typeof variable = string

- variable = null; (true) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number

Empty String Test:

if (variable === '')

- variable = ''; (true) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number

Undefined Test:

if (typeof variable == "undefined")

-- or --

if (variable === undefined)

- variable = ''; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (true) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number

False Test:

if (variable === false)

- variable = ''; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (true) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (false) typeof variable = number

Zero Test:

if (variable === 0)

- variable = ''; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (true) typeof variable = number

- variable = NaN; (false) typeof variable = number

NaN Test:

if (typeof variable == 'number' && !parseFloat(variable) && variable !== 0)

-- or --

if (isNaN(variable))

- variable = ''; (false) typeof variable = string

- variable = null; (false) typeof variable = object

- variable = undefined; (false) typeof variable = undefined

- variable = false; (false) typeof variable = boolean

- variable = 0; (false) typeof variable = number

- variable = NaN; (true) typeof variable = number

如您所见,针对 NaN 进行测试有点困难;

原文由 WebWanderer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题