请注意,doesNotExist
故意不存在,警报永远不会显示,而是我们在浏览器的控制台中留下错误。在jQuery回调中运行此代码有什么特别之处,这会让它像这样失败呢?
HTML:
<div>Shown! But we failed before the alert. Check your console...</div>
CSS:
div { display: none; }
JS:
$('div').fadeIn(100, function() {
if (doesNotExist) {
alert('Nope');
}
else {
alert('Still nope');
}
});
答案 0 :(得分:3)
在回调中运行该代码没有什么特别之处。无论它如何运行,它都会导致异常。在表达式中使用未声明的变量名称始终是错误(typeof
除外)。
要检查是否定义了变量,可以使用
if (typeof doesNotExist === "undefined") {
// it is undefined
}
现在只是告诉你它根本没有被定义,或者它没有价值;根据应用程序,可能是合适的。如果它应该是全球性的,那么:
if (!("doesNotExist" in window)) {
// not defined
}
检查window
对象中的属性,该对象是全局变量(全局var
变量)。
答案 1 :(得分:2)
问题是你正在执行无效的javascript代码。在这种情况下,回调无关紧要。
您必须先使用变量初始化变量,或使用其他方法检查变量是否存在:
var variableName;
// execute your code.
-
//or checking if variable is defined.
if(typeof variableName !== 'undefined') {
alert('nope');
} else {
alert('still nope');
}