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