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
yn'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 = 1etb.e = 1exécuter en premier (étant donné l'associativité à droite=), puisa.x.y.z = ...exécuter et échouer; pourquoi l'baffectation passe-t-elle dans un cas mais pas dans l'autre?