如何检查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( ""
), null
, undefined
, false
和数字0
和NaN
请注意,如果您正在专门检查数字,那么使用此方法错过0
是常见的错误,并且num !== 0
是优选的(或num !== -1
或~num
(hacky代码也会检查-1
))返回-1
函数,例如indexOf
)
要检查null特别是你会使用这个:
if(variable === null && typeof variable === "object")
…或者更简单:
if(variable === null)
这个testing只会传递null
,不会传递""
, undefined
, false
, 0
或NaN
。
其余的是为了回应无政府主义者的评论,是的,你可以单独检查每一个。
你需要实现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。