Impossibile Impostare la Proprietà … undefined — bizzarro

Sto diventando un bizzarro errore in Chrome… controllare la schermata qui sotto.

Definire I record utilizzando un oggetto letterale sintassi.

Cerco impostazione “id” proprietà e ottenere l’eccezione.

Ho provato entrambi :

record['id'] = 'wtf';

e anche

record.id = 'wtf';

Io uso questo tipo di sintassi in tutto il posto nel mio script…. che cosa sta succedendo qui ?
Si tratta di un bug in Chrome ?

Impossibile Impostare la Proprietà ... undefined — bizzarro

MODIFICA :
Io ho risolto il problema, per ora, ma io non sono ancora sicuro del perché questo sta accadendo.
Ho spostato la definizione di record si verificano al di fuori del blocco if. Qualcuno sa cosa potrebbe essere in corso ? Ho pensato che tutte le dichiarazioni di variabili che sono state nell’ambito della funzione e quindi questo non dovrebbe essere un problema.

Non riesco a riprodurre l’errore (su Chrome 7 & Firefox su Mac). Dalle info qui e la schermata, a quanto pare non c’è niente di sbagliato con il tuo codice. Qual è il valore di record destra, prima di un “errata” linea?

OriginaleL’autore rvandervort | 2010-11-16

2 Replies
  1. 15

    Il problema è più probabile che dl è minore o uguale a zero, così la dichiarazione che inizializza record non eseguite. Dal tuo rientro, sembra che è inteso per entrambe le affermazioni da parte del if blocco, ma senza parentesi graffe, il record['id'] = 'wtf'; istruzione viene eseguita, non importa cosa.

    Spostando l’inizializzazione di una variabile al di fuori dell’istruzione if, è costretto ad accadere in qualsiasi caso e spostato l’assegnazione all’interno del blocco if (che sto assumendo è quello che si voleva).

    Probabilmente un modo migliore per risolvere è l’aggiunta di parentesi graffe come questo:

    if (dl > 0) {
        var record = {};
    
        record.id = 'wtf';
    }

    A meno che davvero si desidera inizializzare record in entrambi i casi.

    È corretta variabili dichiarazioni essere nell’ambito della funzione, ma la assegnazione non accade fino a che punto del codice. record è stata portata, ma aveva ancora il suo valore predefinito undefined perché non aveva ricevuto niente ancora.

    Wow. Alcuni bug sono auto-inflitta. Bella cattura !

    OriginaleL’autore Matthew Crumley

  2. 0

    Funziona per me, nessuna ragione per cui non dovrebbe funzionare. Siete sicuri che sia, riferendosi a quella esatta linea? che cosa succede se si alert(record) prima si imposta? Hai provato a eseguire il debug di sicurezza?

    In realtà, penso di aver risolto il problema solo ora … ma ancora non sono sicuro del perché questo sta accadendo. Ho spostato la definizione di record al di fuori di se-blocco e sembra funzionare… io aggiornare la questione principale.
    se si fa scoprire la causa, essere sicuri di condividere il motivo!

    OriginaleL’autore meder omuraliev

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *