Propriété d'objet Javascript connecté à Google Chrome Console avant Déclaration

J'ai testé un certain JavaScript en utilisant la console Google Chrome version 28.0.1500.95 m et je cherche un peu plus de compréhension de la façon dont cela fonctionne: Consultez le code ci-dessous:

 var obj = { a: 99, f: function() { } } console.log(obj.a) console.log(obj.z) console.log(obj) oz = 100; 

Démonstration

Cela produit les résultats suivants:

 99 undefined Object {a: 99, f: function} a: 99 f: function () { } z: 100 __proto__: Object 

Ma question est la suivante: pourquoi z est-il visible dans les résultats lorsqu'il n'a pas été déclaré avant le journal?

Je suppose que c'est quelque chose avec la façon dont la console fonctionne et pas une règle de portée étrange dans JavaScript, que je ne suis pas au courant?

Quelqu'un peut-il me dire ce qui se passe ici s'il vous plaît?

L'objet dans la console initialement est affiché comme Object et élargi lorsque vous cliquez sur la flèche.

Il y a une i-icône lorsque vous développez l'objet, lorsque vous le roulez, vous verrez la réponse:

L'état de l'objet ci-dessous est saisi lors de la première expansion

Ce que vous voyez après l'expansion est l'état de l'objet au moment de l'expansion, et non l'état au moment où vous appelez log()