var a = {}
var b = {}
try{
a.x.y = b.e = 1 // Uncaught TypeError: Cannot set property 'y' of undefined
} catch(err) {
console.error(err);
}
console.log(b.e) // 1
var a = {}
var b = {}
try {
a.x.y.z = b.e = 1 // Uncaught TypeError: Cannot read property 'y' of undefined
} catch(err) {
console.error(err);
}
console.log(b.e) // undefined
y
non esiste su a.x
; ma questo è vero in entrambi i casi. Perché impedisce l'assegnazione del lato destro nel secondo caso ma non nel primo? Cosa c'è di diverso nell'ordine di esecuzione? (Ho menzionato l'errore di sintassi perché il tempo sull'errore di sintassi è molto diverso da quello di un errore di runtime.)
b.z = 1
edb.e = 1
eseguo prima (data l'associatività a destra su=
), poia.x.y.z = ...
esegua e fallisca; perché l'b
incarico passa in un caso ma non nell'altro?