16

所以在执行传递给它的表达式后 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"

所以void(0).someprop等价于void 0..someprop

证明,

void(undefined).someprop 

引发错误,因为它将被评估为 (肯定someprop不存在)undefined

void undefined.someprop
于 2013-09-12T21:01:58.393 回答