我正在编写一个处理变量gameRegion
的脚本,如下所示:
//In the main of the script
var variable= new work();
variable.onCrash(crashHandler,{xPos:650,yPos:300});
// In function work()
var gameRegion;
var onCrashCallback;
this.onCrash = function(crashCallback,fieldSize) {
gameRegion = fieldSize;
onCrashCallback = crashCallback;
};
crashHandler(){
//unimportant
}
this.atBottom = function(ypos) {
if(ypos>gameRegion.yPos) //line with the problem
return true;
return false;
};
我收到控制台错误:TypeError: 'undefined' is not an object (evaluating 'gameRegion.yPos')
。据推测,这意味着我没有正确定义gameRegion
或其变量yPos
。我一直在看这段代码一段时间,我似乎无法找到问题所在。
希望你会看到我没有的东西,但是如果我没有包含必要的上下文代码,请告诉我。感谢您提前提供任何帮助。
答案 0 :(得分:5)
你必须处理' undefined'。可以通过以下方式完成:
typeof(foo) == 'undefined'
typeof foo !== 'undefined'
window.foo !== undefined
'foo' in window
前三个应该是等价的(只要foo不被局部变量遮蔽),而最后一个将在定义全局变量但未初始化(或显式设置为未定义)时返回true
答案 1 :(得分:2)
你可以这样使用typeof -
return (typeof (gameRegion) !== "undefined" &&
typeof(gameRegion.yPos) !== "undefined" &&
ypos > gameRegion.yPos);