2015-05-07 10 views
6

Mam kilka pytań dotyczących poniższego śledzenia stosu javascript.Omówienie stosu kominkowego w języku JavaScript

  1. Dlaczego są dwie części do stacktrace: pierwsza na czerwono u góry, a druga na czarno poniżej?
  2. Co oznacza pierwsza linia zaczynająca się od at? tj. at angular.js:63: dlaczego nie odnosi się do wywołania funkcji/metody, jak inne linie?
  3. Jak to jest zamawiane? Czy linie na dole występują przed liniami na górze?

javascript stacktrace

+0

Naprawdę nie odpowiada na pytanie, ale ten błąd jest prawdopodobnie spowodowany tym, że gdzieś nazywasz '$ scope. $ Apply'. – Cerbrus

+0

Rzeczywiście. Ale naprawdę chciałem uzyskać informacje o strukturze stosu, a nie o tym, jak uniknąć tego stosu. Dzięki i tak. – balteo

+0

Tak wymyśliłem, dlatego napisałem komentarz. – Cerbrus

Odpowiedz

3
  1. Bity w czerwieni są wiadomość wyjątek/błąd - w tym przypadku wygląda jak kanciasty został rzucony wyjątek i w ramach tego wyjątku dodała zawartości stacktrace do wiadomość, podczas gdy czarne bity to ślad stosu, który można uzyskać za każdym razem, gdy w przeglądarce wystąpi nieobsługiwany wyjątek.
    1. Pierwszy wiersz w stanach, gdzie błąd - nazwa skryptu i numer linii - jeśli spojrzeć na źródła angular.js na linii 63 pojawi się stwierdzenie, że wyrzucił wyjątek.
    2. To nie odnosi się do wywołania funkcji, ponieważ jest to instrukcja, która rzuciła wyjątek. Jedynym sposobem na uzyskanie tego polecenia jest seria wywołań funkcji, które są następnie wyświetlane w odwrotnej kolejności.
  2. Prawidłowo. Na przykład funkcja Scope.$apply sprawia, że ​​połączenia do Scope.$evalScope.$eval i wywołuje funkcję o nazwie callback itd

+0

Dzięki phuzi. Nadal nie jestem pewien co do punktu 1 i 2 ... Czy możesz podać więcej szczegółów? – balteo

+0

@balteo Zaktualizowano moją odpowiedź. – phuzi

1

Chrome wykorzystuje silnik V8 do pracy na JavaScript. Tak, cytuję na poniższy link na odpowiedź - https://code.google.com/p/v8-wiki/wiki/JavaScriptStackTraceApi

  1. nie jestem pewien, o odpowiedź na to pytanie.

  2. Pierwsza linia informuje nas o lokalizacji, w której wystąpił błąd. Z ramą taką jak kanciasta, może znajdować się głęboko w ramie, nie musi to być kod użytkownika.

  3. Tak, od dołu do góry, tj. Od punktu, w którym błąd wystąpił, w górę w kierunku osoby dzwoniącej, w tym przypadku do wysyłki zdarzenia jQuery.

+0

Dzięki za link Siva. – balteo

+0

serdecznie zapraszamy @balteo. –

Powiązane problemy