16

Soは、渡された式を実行した後に void戻ります。プロパティにアクセスしようとすると、例外がスローされます。では、なぜクラッシュするのではなく、それが返されるのでしょうか?undefinedundefinedvoid(0).propundefined

alert("void(0) => " + void(0)); // undefined

// How is it that this doesn't throw an exception?
alert("void(0).someprop => " + void(0).someprop); // undefined

// Exception, can't access property of undefined.
alert("undefined.someprop => " + undefined.someprop); // crash

http://jsfiddle.net/bFhLS/

4

2 に答える 2

16

void演算子は括弧自体を使用しません。したがって、ステートメントはおそらく次のように解析されます。

void( (0).someprop )

からアクセスsomepropNumberます。次のようではなく:

(void (0)).someprop

ご想像のとおり、エラーがスローされます。

于 2013-09-12T20:48:23.883 に答える
1

void演算子であり、関数ではありません

void(0)と同等"void 0"です。

Sovoid(0).somepropは と同等void 0..somepropです。

証明する、

void(undefined).someprop 

として評価されるため、エラーをスローします (確かsomepropに存在しませんundefined)

void undefined.someprop
于 2013-09-12T21:01:58.393 に答える