2014-04-14 11 views
9

Perché il debugger di Chrome salta le istruzioni di eliminazione? Il seguente codice mostrerà l'osservazione se eseguito in una console.Perché il debugger di Chrome ignora le istruzioni di eliminazione?

(function() { 
    var foo = { bar: true }; 
    debugger; 
    delete foo.bar; 
})(); 
+1

Questo è così strano che non l'ho mai notato prima. Passa sopra un'istruzione che crea un oggetto var foo = {}, quindi ha senso solo che dovrebbe andare oltre l'istruzione delete pure. Non ho trovato nessuna spiegazione da nessuna parte però. – sublime

+2

Qualcuno aveva precedentemente [archiviato un bug] (https://code.google.com/p/v8/issues/detail?id=2957) con V8, sebbene non ci sia stata alcuna risposta ad esso. –

+2

Controlla l'algoritmo [this] (http://perfectionkills.com/understanding-delete/#delete_and_host_objects) per 'delete'. È interessante notare che il debugger si ferma per alcuni degli altri scenari di eliminazione (come 'delete foo'). – unclekyky

risposta

1

La risposta qui è nella natura del comando 'eliminare' la sua non è una funzione comune come siete abituati a in js. La mia ipotesi è che gli strumenti chrome siano impostati per fermarsi su ogni riga che contiene una definizione oggetto o un oggetto che esegue un metodo, dietro le quinte quasi tutto ciò che si incontra in javascript è un oggetto, tuttavia l'eliminazione non è un oggetto ma un operatore come ' + 'o' - '. E il motivo per cui viene saltato è perché questa sarà l'unica volta in cui avrai una linea che non genera un errore ma non definisce o chiama un oggetto.

+1

'delete' genera un errore se utilizzato in modalità rigorosa su una proprietà non configurabile. –

Problemi correlati