[英]void(0) returns `undefined`, but allows property access. Why?
因此,在执行传递给它的表达式后, 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
void
运算符本身不使用括号。 因此,该语句可能被解析为:
void( (0).someprop )
并从Number
访问someprop
。 而不是:
(void (0)).someprop
正如您可能期待的那样,这会引发错误。
void
是一个运算符 ,它不是一个函数。
void(0)
相当于"void 0"
。
所以void(0).someprop
相当于void 0..someprop
。
证明,
void(undefined).someprop
抛出一个错误,因为它将被评估为( someprop
在undefined
中不存在肯定)
void undefined.someprop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.