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
n'existe pas sur a.x
; mais c'est vrai dans les deux cas. Pourquoi empêche-t-il l'affectation du côté droit dans le second cas mais pas dans le premier? Qu'est-ce qui est différent dans l'ordre d'exécution? (J'ai mentionné une erreur de syntaxe car le timing de l'erreur de syntaxe est très différent de celui d'une erreur d'exécution.)
b.z = 1
etb.e = 1
exécuter en premier (étant donné l'associativité à droite=
), puisa.x.y.z = ...
exécuter et échouer; pourquoi l'b
affectation passe-t-elle dans un cas mais pas dans l'autre?