2

単純な変数が定義されているかどうかのチェックは、myVar?

問題は、CoffeeScript でネストされたプロパティが定義されているかどうかを確認する良い方法があるかどうかです。

例えば

if property.p.p.p.p?
  alert "Hello"

ReferenceErrorif property.p.p.p(またはproperty.p.p| property.p) が定義されていない場合にスローします。

これは再帰的にチェックしなければならないものですか、それとも便利な機能はありますか?

4

1 に答える 1

12
if property?.p?.p?.p?.p?
  alert "Hello"

あなたが望むことをします。

に変換されます

var _ref, _ref1, _ref2;

if ((typeof property !== "undefined" && property !== null ? (_ref = property.p) != null ? (_ref1 = _ref.p) != null ? (_ref2 = _ref1.p) != null ? _ref2.p : void 0 : void 0 : void 0 : void 0) != null) {
  alert("Hello");
}

JSで。

ドキュメントの関連部分:

存在演算子 ? のアクセサーバリアント。プロパティのチェーンで null 参照を吸収するために使用できます。ドット アクセサーの代わりに使用します。ベース値が null または未定義の可能性がある場合。すべてのプロパティが存在する場合は、期待される結果が得られます。チェーンが壊れている場合は、そうでない場合に発生する TypeError の代わりに undefined が返されます。

于 2013-08-19T03:37:29.827 に答える