1. ホーム
  2. javascript

[解決済み] ジャバスクリプトです。"未定義 "はオブジェクトではない

2022-02-11 11:11:08

質問

ある変数を扱うスクリプトを書いています。 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 . このコードをしばらく見ていたのですが、何が問題なのかがわからないようです。

しかし、もし私が文脈上必要なコードを含んでいないなら、教えてください。事前にご助言いただき、ありがとうございます。

どのように解決するのですか?

未定義」を処理する必要があります。その方法は以下の通りです。

typeof(foo) == 'undefined'
typeof foo !== 'undefined'
window.foo !== undefined
'foo' in window

最初の 3 つは (foo がローカル変数によってシャドウされていない限り) 等価で、最後のものはグローバル変数が定義されているが初期化されていない (あるいは明示的に undefined に設定されている) 場合に true を返します。