这是我的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
JS Test
</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
if(someObj != null || typeof someObj != 'undefined')
{
alert("Success.");
}
else
{
alert("Failed.");
}
</script>
</head>
<body>
为什么它总是返回错误信息 - “someObj未定义”给我? 我想把代码放到页面底部,检查someObj是否已被声明。
答案 0 :(得分:2)
反过来说:
if(typeof someObj != 'undefined' && someObj != null)
{
alert("Success.");
}
else
{
alert("Failed.");
}
也就是说,在您确定已将someObj
确定为已确认后,请勿尝试实际使用typeof
。
如果事实上未定义变量,当您使用if
启动someObj != null
条件时,会收到错误“someObj未定义”,因为 - 好吧,不是已定义。
如果您首先使用typeof
对其进行测试,那么除非实际定义,否则它不会进行null
比较。
答案 1 :(得分:0)
正确测试全局变量是否存在的方法如下:
if (typeof window.someObj != "undefined" && window.someObj != null) {
alert("success");
}
但是,你确实意识到在这段代码之前没有你自己的自定义javascript可以定义someObj
,所以这个测试永远不会找到那个变量。
答案 2 :(得分:0)
如果您的对象是Jquery对象,请使用
var myObj=$('#myObj');
if (myObj.length) {
alert("Success");
} else {
alert("NOt found");
}