2014-04-14 11 views
9

Dlaczego debuger Chrome omija instrukcje usuwania? Poniższy kod demonstruje obserwację, jeśli został uruchomiony w konsoli.Dlaczego debugger Chrome pomija instrukcje usuwania?

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

To takie dziwne, że nigdy wcześniej tego nie zauważyłem. Wykonuje instrukcję, która tworzy obiekt var foo = {}, więc ma sens tylko to, że powinien przejść przez instrukcję delete. Nie można jednak znaleźć żadnego wyjaśnienia. – sublime

+2

Ktoś wcześniej [zgłosił błąd] (https://code.google.com/p/v8/issues/detail?id=2957) z V8, ale nie było żadnej odpowiedzi na to. –

+2

Sprawdź [this] (http://perfectionkills.com/understanding-delete/#delete_and_host_objects) algorytm dla 'delete'. Co ciekawe, debugger zatrzymuje się dla niektórych innych scenariuszy usuwania (takich jak 'delete foo'). – unclekyky

Odpowiedz

1

Odpowiedź tutaj ma charakter polecenia "usuń", a nie jest to zwykła funkcja, jak w js. Domyślam się, że narzędzia chrome są ustawione tak, aby zatrzymywały się na każdym wierszu zawierającym definicję obiektu lub obiekt uruchamiający metodę, za kulisami prawie wszystko, co napotkano w javascriptu, jest obiektem, jednak delete nie jest obiektem, ale operatorem takim jak " + "lub" - ". Powodem, dla którego zostanie pomijany, jest to, że będzie to jedyny czas, w którym będziesz miał linię, która nie rzuca błędu, ale nie definiuje ani nie wywołuje obiektu.

+1

'delete' powoduje błąd podczas używania w trybie ścisłym dla właściwości niefigurowalnej. –

Powiązane problemy