如何在 JavaScript 中检查空值?

IT技术 javascript null compare comparison equality
2021-01-13 01:04:27

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

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

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

}   

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

6个回答

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

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

这将检查空字符串 ( ""), null, undefined,false以及数字0NaN

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

了解此测试的哪些部分针对哪些值将非常有用。有时您会特别寻找一种。
2021-03-15 01:04:27
读者,在对数字数据使用这种类型的测试时请小心。不要使用!!!测试的nullundefined在一般数字数据,除非你也想扔掉的0值。
2021-03-20 01:04:27
答案本身说明了这一点:“......和数字0......”。我相信这个答案非常适合给定上下文的问题(我推断是“用户名、密码、电子邮件”),他们没有检查0值。但是,鉴于此问题和答案的受欢迎程度,我同意在答案本身中值得一提。
2021-03-20 01:04:27
有点晚了,但是是的,您可以对每个@inorganik 进行测试,请参阅下面的答案
2021-04-05 01:04:27
@Hendeca -翻白眼去阅读实际问题中的代码。显然是在询问用户名和密码。我没有在猜测什么,我只是出于礼貌。你对我回答他们需要的而不是他们问的问题感到困扰,这是荒谬的。就是这样,大多数时候人们不知道他们应该要求什么。在原始问题的上下文中,此答案是正确的。现在停止添加噪音。
2021-04-09 01:04:27

检查null具体你可以使用这样的:

if (variable === null)

本次测试将通过了null,也不会通过的""undefinedfalse0,或NaN

此外,我已经为每个“类似假”的值(会为 返回真值)提供了绝对检查!variable

注意,对于一些绝对的检查,你将需要实现的使用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

jsfiddle.net/neoaptt/avt1cgem/1这是这个答案分解成函数。不是很有用,但我还是做了。
2021-03-12 01:04:27
我将做一些几乎从来都不是一个好主意的事情:更改此答案中的代码。具体来说,在检查 null 时,删除对类型对象完全不必要的测试。这是一个基本的代码片段:即使是一个初学者也错误地了解到他们需要进行冗长的测试,这不是一个好主意
2021-03-22 01:04:27
是否存在variable === null但不是“对象”类型的情况如果没有,为什么不将检查简化为variable === null,丢弃第二个连词?谢谢。
2021-04-01 01:04:27
@HunanRostomyan 好问题,老实说,不,我认为没有。使用variable === null我刚刚在此 JSFiddle 中测试的内容,您很可能已经足够安全了我还使用 ` && typeof 变量 === 'object'` 的原因不仅是为了说明一个有趣的事实,即一个null值是一个 typeof object,也是为了跟上其他检查的流程。但是,是的,总而言之,您可以安全地使用variable === null.
2021-04-02 01:04:27
如果使用===严格相等,类型检查的目的是什么谢谢。同样对于 NaN 测试,您可以使用isNaN(value)true只会在变量等于 NaN 时返回
2021-04-04 01:04:27

只需更换=====在所有地方。

== 是松散或抽象的相等比较

=== 是严格相等比较

有关更多详细信息,请参阅关于平等比较和相同性的 MDN 文章

@BobRodes 感谢您澄清我糟糕的写作,我很感激:)
2021-03-17 01:04:27
@AndrewMaoundefined 不是 nullstackoverflow.com/a/5076962/753237
2021-03-18 01:04:27
我相信这就是@AndrewMao 所说的,真的。他的第一句话可能会改写为“这只适用于 undefined 和 null 不是实际等价物的情况。”
2021-04-01 01:04:27
@AndrewMao 不客气。我不会说你的写作很差,就个人而言;我会说这比平均水平要好得多。:)
2021-04-03 01:04:27
这仅在您认为undefined不是时才有效null否则会导致很多意想不到的行为。通常,如果您对null/undefined但不是虚假值都感兴趣,则使用==(您应该这样做的少数情况之一)。
2021-04-07 01:04:27

严格相等运算符:-

我们可以通过 ===

if ( value === null ){

}

只需使用 if

if( value ) {

}

如果value 不是,则评估为 true

  • 空值
  • 不明确的
  • NaN
  • 空字符串 ("")
  • 错误的
  • 0

您可以检查某些值是否为空,如下所示

[pass,cpass,email,cemail,user].some(x=> x===null) 

奖励:为什么=====来源更清楚

a == b

在此处输入图片说明

a === b

在此处输入图片说明

很棒的 2 个图表,我冒昧地将它们合并:docs.google.com/drawings/d/...
2021-04-04 01:04:27
除了上面的2张图。虽然if ([] == false)为真(如您的图表所示),但 if ([])也评估为真。
2021-04-09 01:04:27