2013-08-07 13 views
9

ho provato un po 'di JavaScript utilizzando la console Google Chrome version 28.0.1500.95 m e sono alla ricerca di un po' più di comprensione di come funziona: Date un'occhiata al codice qui sotto:JavaScript Object proprietà loggato Google Chrome Console prima Dichiarazione

var obj = { 
    a: 99, 
    f: function() { } 
} 

console.log(obj.a) 
console.log(obj.z)  
console.log(obj) 

o.z = 100; 

Demo

emette i seguenti risultati:

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

la mia domanda è, perché è z visibile nei risultati quando non è stato dichiarato fino a dopo il registro?

Sto assumendo che questo è qualcosa con come funziona la console e non una regola di scoping strana in JavaScript, di cui non sono a conoscenza?

Qualcuno può dirmi cosa sta succedendo qui per favore?

risposta

11

L'oggetto nella console inizialmente è mostrato come Object ed espanso quando si fa clic sulla freccia.

Ci

è un i-icona quando si espande l'oggetto, quando si passa esso si vedrà la risposta:

stato oggetto di seguito viene catturato sulla prima espansione

Quello che si vede dopo il l'espansione è lo stato dell'oggetto al momento dell'espansione, non lo stato nel momento in cui si chiama log()

+3

Lol anche alla versione 28 l'unico miglioramento che hanno fatto è di aggiungere un tooltip quasi insuperabile che questo sta accadendo. – Esailija

+0

Sto facendo un ordinamento in array: se sono diversi (cioè: sto ordinando un array qui), significa che ho scritto la mia logica di script in modo errato? Perché ciò che viene mostrato per primo non è lo stesso ordine di quello mostrato nella lista espansa. – efwjames

+0

l'output della console non ha nulla a che fare con la tua logica di script (potresti ad esempio registrare l'array unito per ottenere l'ordine previsto nel log) –

Problemi correlati