Javascript:“未定义”不是对象

时间:2014-01-07 05:03:11

标签: javascript object undefined

我正在编写一个处理变量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。我一直在看这段代码一段时间,我似乎无法找到问题所在。

希望你会看到我没有的东西,但是如果我没有包含必要的上下文代码,请告诉我。感谢您提前提供任何帮助。

2 个答案:

答案 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);