因此void
在执行传递给它的表达式后返回undefined
。当您尝试访问其属性时,undefined
会抛出异常。那么为什么void(0).prop
会返回undefined
而不是崩溃?
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
答案 0 :(得分:16)
void
operator不使用括号本身。因此,该语句可能被解析为:
void( (0).someprop )
从someprop
访问Number
。而不是:
(void (0)).someprop
正如您可能期待的那样,这会引发错误。
答案 1 :(得分:1)
void
是运算符, NOT 是一个函数。
void(0)
相当于"void 0"
。
因此void(0).someprop
相当于void 0..someprop
。
要证明,
void(undefined).someprop
会抛出错误,因为它会被评估为someprop
中undefined
肯定不存在
void undefined.someprop