如何验证JavaScript中对象的存在?
以下工作:
if (!null)
alert("GOT HERE");
但是这会抛出一个错误:
if (!maybeObject)
alert("GOT HERE");
错误:
maybeObject没有定义。
如何验证JavaScript中对象的存在?
以下工作:
if (!null)
alert("GOT HERE");
但是这会抛出一个错误:
if (!maybeObject)
alert("GOT HERE");
错误:
maybeObject没有定义。
当前回答
如果你只关心它的存在(它被宣布了吗?),认可的答案就足够了:
if (typeof maybeObject != "undefined") {
alert("GOT THERE");
}
如果你关心它的实际值,你应该添加:
if (typeof maybeObject != "undefined" && maybeObject != null ) {
alert("GOT THERE");
}
As typeof(null) == "object"
例如:bar = {x: 1, y: 2, z: null}
typeof( bar.z ) == "object"
typeof( bar.not_present ) == "undefined"
通过这种方式,您可以检查它既不是null也不是undefined,并且由于typeof在value不存在的情况下不会出错加上&&短路,因此您永远不会得到运行时错误。
就我个人而言,我建议在某个地方添加一个helper fn(让我们不要相信typeof()):
function exists(data){
data !== null && data !== undefined
}
if( exists( maybeObject ) ){
alert("Got here!");
}
其他回答
你可以用"typeof"。
if(typeof maybeObject != "undefined")
alert("GOT HERE");
如果这是一个全局对象,你可以使用If (!window.maybeObject)
对我来说,这适用于dom对象:
if(document.getElementsById('IDname').length != 0 ){
alert("object exist");
}
如果你只关心它的存在(它被宣布了吗?),认可的答案就足够了:
if (typeof maybeObject != "undefined") {
alert("GOT THERE");
}
如果你关心它的实际值,你应该添加:
if (typeof maybeObject != "undefined" && maybeObject != null ) {
alert("GOT THERE");
}
As typeof(null) == "object"
例如:bar = {x: 1, y: 2, z: null}
typeof( bar.z ) == "object"
typeof( bar.not_present ) == "undefined"
通过这种方式,您可以检查它既不是null也不是undefined,并且由于typeof在value不存在的情况下不会出错加上&&短路,因此您永远不会得到运行时错误。
就我个人而言,我建议在某个地方添加一个helper fn(让我们不要相信typeof()):
function exists(data){
data !== null && data !== undefined
}
if( exists( maybeObject ) ){
alert("Got here!");
}
除了检查对象/变量是否存在之外,您可能希望提供一个“最坏情况”输出,或者至少将其捕获到警报中,这样就不会被忽略。
检查、提供替代方案和捕捉错误的函数示例。
function fillForm(obj) {
try {
var output;
output = (typeof obj !== 'undefined') ? obj : '';
return (output);
}
catch (err) {
// If an error was thrown, sent it as an alert
// to help with debugging any problems
alert(err.toString());
// If the obj doesn't exist or it's empty
// I want to fill the form with ""
return ('');
} // catch End
} // fillForm End
我创建这个也是因为我传递给它的对象可能是x, x.m, x.m[z],如果x.m不存在,则typeof x.m[z]将失败并报错。
我希望这能有所帮助。(顺便说一下,我是JS新手)