0

JS が単純な UNDEFINED エラーで停止することに少しイライラしています。

すでにグローバルスコープにあるものに基づいて変数を「設定」する必要があるルーチンがあります

targetID = myData.id;
targetID = myData.targetValue;

これらのオブジェクトは、以前の操作に応じて設定される場合と設定されない場合があります...

私はしばしばこのエラーを受け取ります:

TypeError: myData is undefined
targetValue =  myData.targetValue;

JS コードの残りの部分は実行を停止します。

迷惑..

PHP、AS2、およびその他の言語から来ているため、スクリプトは未定義の値だけで停止することはありません..

これで、変数を設定する前に「未定義」を簡単にテストできることがわかりました..しかし、実際には、設定する変数がたくさんあり、「それぞれ」で条件を実行するのは少しばかげています..

未定義の変数/オブジェクトに関係なく、JS を実行し続けるようにするにはどうすればよいですか?

または少なくとも、コードに固有のエラーを抑制するにはどうすればよいですか(グローバルではありません)..

PHP では、"@" 記号を使用して呼び出しの前に置くと、警告やエラーが抑制されます。

4

2 に答える 2

3

ここでの問題は、値が であることではありませんundefined。問題は、 のプロパティにアクセスしようとしているためにundefined、エラーが発生することです (エラーが発生するはずです)。

私はPHPを知りませんが、このようなことが起こったときにエラーをスローしないとは想像できません.

これを防ぐためにできることは次のとおりです。

myData = myData || {};  // this will assure that myData is not undefined. That way the next call will not try to retrieve a property on undefined.
targetID = myData.id;
targetID = myData.targetValue;
于 2013-05-10T12:56:04.590 に答える
2

ガード演算子を使用します。プロパティを読み取ろうとする前に、オブジェクトが存在するかどうかを確認してください。

targetID = myData && myData.id || "default value";

存在する場合myDataは を使用しmyData.id、そうでない場合はこれを使用します。"default value"

変数のグループに対してこれを行いたい場合は、次のことができます。

var targetId, targetValue;
if( myData ) {
    targetId = myData.id;
    targetValue = myData.value;
}
于 2013-05-10T12:53:36.360 に答える