如何检查变量是否为空?

nic*_*ckb 261 javascript comparison null-check

我知道以下是JavaScript中检查变量是否不是的两种方法null,但我很困惑哪种方法最好使用.

我应该这样做:

if (myVar) {...}
Run Code Online (Sandbox Code Playgroud)

要么

if (myVar !== null) {...}
Run Code Online (Sandbox Code Playgroud)

Tim*_*own 373

他们并不等同.第一个将在if语句后执行块,如果myVar真实的(即true在条件中求值),而第二个将执行块,如果myVar是除了以外的任何值null.

在JavaScript中唯一不真实的值是以下(也称为虚假值):

  • null
  • undefined
  • 0
  • "" (空字符串)
  • false
  • NaN


Tol*_*rak 59

以下是测试变量是否为NULL的方法:

if (myVar !== null) {...}

如果myVar不为null,则执行该块.如果myVar未定义或为false或0NaN其他任何内容,将执行该块.


Jon*_*ter 44

请阅读这篇文章:http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

它有一些很好的JavaScript技巧,但它提到的一件事是你应该检查null,如:

if(myvar) { }
Run Code Online (Sandbox Code Playgroud)

它还提到了你可能没有意识到的被认为是"虚假"的东西.

  • 这项检查实际上并不安全.如果myvar为0,false或任何其他假值,则测试将失败(如果您只打算检查非null).因此,如果变量永远不会有另一个假值,则只使用它来检查非null. (33认同)
  • 链接不再有效.我找到了一份似乎是帖子的副本:http://appendto.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/虽然奇怪但是很奇怪,因为以利亚的帖子(和示例代码)会暗示他是作者,但他没有被列为作者...... (2认同)
  • 看起来该网站已不复存在.如果您可以将信息包含在帖子本身而不仅仅是外部链接中,将会很有帮助. (2认同)

Fla*_*Cat 8

我刚刚遇到另一种可能的情况.

我做了一个ajax调用,并以字符串格式将数据作为null返回.我必须这样检查:

if(value != 'null'){}
Run Code Online (Sandbox Code Playgroud)

因此,null是一个读取"null"而不是真正为null的字符串.

编辑:应该理解,我不是以应该的方式出售它.我有一个场景,这是唯一可行的方法.我不确定为什么......也许编写后端的人正在错误地呈现数据,但无论如何,这都是现实生活.令人沮丧的是,有人认为这不太正确,然后由实际上有帮助的人投票.

  • 是的,我投了反对票,因为我认为这是错误的解决方案。在ajax调用的情况下,最好先做`value = JSON.parse(value)`,然后使用简单恰当的`value != null`测试 (5认同)
  • 显然你不明白.我意识到你认为你这样做,但你没有. (2认同)
  • 我明白这是一个有效的解决方案.但我不认为这是好建议,所以请尊重我的downvote. (2认同)

Kam*_*ski 8

  • 您内部的代码if(myVar) { code }仅在myVar等于时才会执行:false, 0, "", null, undefined, NaN或您从未定义变量myVar(然后代码会停止执行并引发异常)。
  • 您内部的代码if(myVar !== null) {code}仅在myVar等于null或从未定义时才执行(抛出异常)。

这边有全部(src

如果

在此处输入图片说明

==(其否定!=

在此处输入图片说明

===(其否定!==

在此处输入图片说明