5

私の目標: オブジェクトの属性が true であるか、true を返すかどうかをテストします。ただし、オブジェクトが定義されていない場合もあります。


これは問題なく動作します。スクリプトは正常に続行されます。

if(somethingUndefined){ }


ただし、未定義のオブジェクトの属性にアクセスしようとすると、エラーが発生してスクリプトが停止します。

if(somethingUndefined.anAttribute){ }


現在、これは私が問題を解決するために使用しているものです:

if(somethingUndefined && somethingUndefined.anAttribute){ }


それを行う別の方法はありますか?プログラムが未定義のオブジェクトの属性にアクセスしようとした場合に false を返すグローバル設定でしょうか?

4

3 に答える 3

1

のような if ステートメントが多数ある場合if(somethingUndefined && somethingUndefined.anAttribute){ }、未定義のときに空のオブジェクトを割り当てることができます。

var somethingUndefined = somethingUndefined || {};

if (somethingUndefined.anAttribute) {

}
于 2013-09-03T03:43:58.167 に答える
0

質問での方法は、通常、javascriptで行う方法です。これを頻繁に使用していることに気付いた場合は、関数に抽象化して、物事を少しきれいにすることができます。

if (attrDefined(obj, 'property')) {
  console.log('it is defined, whoo!');
}

function attrDefined(o, p){ return !!(o && o[p]) }
于 2013-09-03T03:49:16.173 に答える