2

こんにちは、私はJSが初めてです。

testプロパティを持たないという名前のオブジェクトがあるとしますmissing。しかし、私は同じものにアクセスしようとします:

test.missing //getting undefined as output

今私は私に与えるmissingプロパティ(このような)にアクセスしようとしています. しかし、私の本には、次のようにしてこれを取り除くことができると書かれています。test.missing.404TypeErrorTypeError

test.missing && test.missing.404

さて、私の大きな疑問は、タイプとタイプ&&に対してどのように対処できるかということです。Js がここで何をしているのか推測できませんでした。undefinedTypeError

前もって感謝します。

4

2 に答える 2

4

undefinedin js は として扱われfalse、何かに値がある場合は として扱われるtrueため、次のようになります。

//if test.missing is NOT undefined and test.missing.404 is also NOT undefined
if (test.missing && test.missing.404)
于 2012-12-17T09:19:36.020 に答える
1

まず、JS は他の多くのプログラミング言語と同様に、比較の際にショート サーキット手法を使用することを知っておく必要があります。したがって、この場合、最初の条件が false の場合、次の条件をチェックする必要はありません。これは、0 && X 結果が常に 0 になるためです。

そうは言っても、test.missing && test.missing.404「テストオブジェクトにプロパティがなく、(テストオブジェクトの)プロパティに404プロパティがない場合」と認識できます。そもそもテストオブジェクトに欠落しているプロパティがない場合、JSインタープリターは欠落しているプロパティの404プロパティのチェックを完全に無視します。

したがって、ポイントは、上記のコードは undefined と TypeError の && 比較ではなく、最初のプロパティが存在しない場合はプロパティの欠落と 404 プロパティをチェックすることです。これが意味のある広告で十分に説明されていることを願っています。

于 2012-12-17T09:29:10.337 に答える