Итак 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