如何检查JavaScript中的空值?

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

if (pass == null || cpass == null || email == null || cemail == null || user == null) { alert("fill all columns"); return false; } 

我怎样才能find我的JavaScript程序中的错误?

Javascript是非常灵活的方面来检查“空值”。 我猜你实际上是在寻找空string,在这种情况下,这个简单的代码将工作:

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

它将检查空string( "" ), nullundefinedfalse和数字0NaN

请注意,如果您正在专门检查数字,那么使用此方法错过0是常见的错误,并且num !== 0是优选的(或num !== -1~num (hacky代码也会检查-1 ))返回-1函数,例如indexOf

要检查null特别是你会使用这个:

 if(variable === null && typeof variable === "object") 

…或者更简单:

 if(variable === null) 

这个testing只会传递null ,不会传递""undefinedfalse0NaN

其余的是为了回应无政府主义者的评论,是的,你可以单独检查每一个。

你需要实现absolutely equals: ===typeof以绝对确定你的支票。

我在这里创build了一个JSFiddle来显示所有单独的testing工作

这里是所有testing的输出:

 Null Test: if(variable === null && typeof variable === "object") - 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 === "" && typeof variable === "string") - 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(variable === undefined && typeof 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 && typeof variable === "boolean") - 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 && typeof variable === "number") - 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(!parseFloat(variable) && variable != 0 && typeof variable === "number") - 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进行testing有点难度。

只需在所有地方用===replace==

==是一个宽松或抽象的平等比较

===是一个严格的平等比较

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

严格的平等运营商: –

我们可以通过===检查null

 if ( value === null ){ } 

只要使用if

 if( value ) { } 

如果值不是 :则评估为真:

  • 空值
  • 未定义
  • 为NaN
  • 空string(“”)
  • 0

首先,你有一个没有函数体的return语句。 有可能会抛出一个错误。

一个更清洁的方式来做你的支票将是简单地使用! 运营商:

 if (!pass || !cpass || !email || !cemail || !user) { alert("fill all columns"); } 

你可以最后使用try catch

  try { document.getElementById("mydiv").innerHTML = 'Success' //assuming "mydiv" is undefined } catch (e) { if (e.name.toString() == "TypeError") //evals to true in this case //do something } finally {} 

你也可以throw自己的错误。 看到这个

在javascript中检查未定义null ,您只需要编写以下代码:

 if (!var) { console.log("var IS null or undefined"); } else { console.log("var is NOT null or undefined"); } 

这是对WebWanderer关于检查NaN的解决scheme的评论(我没有足够的代表尚未发表正式评论)。 该解决scheme读取为

 if(!parseInt(variable) && variable != 0 && typeof variable === "number") 

但是对于将变为0有理数,例如variable = 0.1 ,这将失败。 更好的testing将是:

 if(isNaN(variable) && typeof variable === "number") 

在JavaScript中,没有string等于null

pass是一个空string时,也许你期望pass == null为true,因为你知道松散的相等运算符==执行某种types的强制转换。

例如,这个expression式是正确的:

 '' == 0 

相反,严格的等号运算符===说这是错误的:

 '' === 0 

由于'' 0 ''和“ 0大致相等,所以可以合理地推测''null大致相等”。 但是,他们不是。

这个expression是错误的:

 '' == null 

将任何string与null比较的结果是false。 因此, pass == null ,所有其他testing总是为false,并且用户永远不会得到警报。

要修复您的代码,请将每个值与空string进行比较:

 pass === '' 

如果你确定pass是一个string,那么pass == ''也将起作用,因为只有一个空string松散地等于空string。 另一方面,一些专家说,除非你特意要做松散等式操作符所执行的types强制,否则在JavaScript中总是使用严格的等式是一个好习惯。

如果你想知道什么样的值是大致相等的,请参阅Mozilla关于这个主题的文章中的“相同性比较”表。

下划线: _.isNull

 _.isNull(null); => true _.isNull(undefined); => false 

jQuery: jQuery.type

 jQuery.type( null ) === "null" 

如果来自数据库的布尔值为ex,这将不起作用:

  value = false if(!value) { // it will change all false values to not available return "not available" } 

无张力解决scheme

使用jquery来检查object是否为 。 那么你可以通过添加!($.isEmptyObject(data[i].geo))

 if (!($.isEmptyObject(data[i].geo))) { var computed_latitude = data[i].geo.coordinates[0]; var computed_longitude = data[i].geo.coordinates[1]; myLatlng = {lat: computed_latitude, lng: computed_longitude}; var marker = new google.maps.Marker({ position: myLatlng, map: map, title: data[i].text }); } 

尝试这个:

 if (!variable && typeof variable === "object") { // variable is null } 

您也可以使用这个可重复使用的is-nil开源组件 ,它确定val引用是否为null或未定义,并返回一个布尔值。

例子:

 isNil(null) // => true isNil('') // => true 

即使给定一个空string,它也会返回false。