繁体   English   中英

void(0)返回`undefined`,但允许属性访问。为什么?

[英]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

http://jsfiddle.net/bFhLS/

void运算符本身不使用括号。 因此,该语句可能被解析为:

void( (0).someprop )

并从Number访问someprop 而不是:

(void (0)).someprop

正如您可能期待的那样,这会引发错误。

void是一个运算符 ,它不是一个函数。

void(0)相当于"void 0"

所以void(0).someprop相当于void 0..someprop

证明,

void(undefined).someprop 

抛出一个错误,因为它将被评估为( somepropundefined中不存在肯定)

void undefined.someprop

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM