Jeśli przeglądarka wykonuje skrypt JavaScript na stronie internetowej i napotka nieprawidłowy kod JavaScript (np. Somerandomthingy;) Czy wykonywanie JavaScriptu zostanie zatrzymane w tym momencie lub operacje asynchroniczne będą kontynuowane. Również zdarzenia JavaScript nadal działają (np. Onclick).Czy wykonywanie javascript kończy się po napotkaniu niepoprawnej linii?
Odpowiedz
Tak, oprócz asynchronicznych. http://jsfiddle.net/pimvdb/R4dfJ/3/
DIY:
var a = 1, b, c;
setTimeout(function() {
b = 2;
console.log('Running', a, b, c);
}, 1000);
somerandomthingy;
c = 3;
Uncaught ReferenceError: somerandomthingy is not defined
Running 1 2 undefined
Więc:
a
ib
zostały ustawionec
nie została ustawiona- Timeout nadal występuje
Co do "czy on-line nadal działa" - cóż, jeśli program obsługi jest ustawiony na uruchamiany kod (tzn. przed błędem) to robi; w przypadku, gdy zostanie wstawiony po kodzie błędu, nie będzie wiązał się z programem obsługi, więc zdarzenia nie będą działać.
Myślę, że wykonanie zatrzymuje się. Jeśli ustawisz alert po linii kodu, który się zepsuje, nie dojdziesz do alertu, co prowadzi mnie do przekonania, że wykonanie się zatrzymuje. Nie jestem pewien, czy to samo dotyczy asynch XmlHtttpRequests.
To trochę zależy od tego, co robisz. Zwykle rzeczy przestaną działać, a jeśli używasz inteligentnej przeglądarki z konsolą, zostanie zarejestrowany komunikat o błędzie (i czasami te komunikaty o błędach są pomocne, nawet, ale nie zawsze).
UNCAUGHT EXCEPTION: SYNTAX ERROR, UNRECOGNIZED EXPRESSION: #
Czasami jednak rzeczy po prostu po cichu nie bez błędu lub ostrzeżenia, zwłaszcza jeśli używasz jQuery lub inną bibliotekę. Spędziłem wiele godzin, próbując rozwiązać problem, dlaczego coś działało dobrze w WebKit i Firefox, ale po cichu zawiodłem w IE i prześledziłem winowajcę do błędu PEBCAK w metodzie jQuery .append(), która próbowała wstawić jakiś niepoprawny kod HTML do DOM. To było irytujące, ponieważ wszystko inne działało dobrze, bez błędów, bez ostrzeżeń, nic, ale w IE ta jedna funkcja po prostu nie "pójdzie".
Kod nie jest wykonywany po wystąpieniu błędu.
function inAFunction(){
alert("one");
x = y;
alert("two");
}
inAFunction();
widać "jeden", ale nie "dwa"
alert("one");
x = y;
alert("two");
zobaczysz "jeden", ale nie "dwa"
var a = {
b : c
}
alert("here");
widać nic.
- 1. Ember dławi się po napotkaniu dużych zestawów danych
- 2. Uwierzytelnianie linii poleceń mongo kończy się niepowodzeniem.
- 3. C# StringBuilder: Sprawdź, czy kończy się na nowej linii
- 4. Zatrzymaj wykonywanie funkcji JavaScript (po stronie klienta) lub dostosuj ją
- 5. Angular2: Aplikacja ulega awarii/przestaje reagować po napotkaniu wyjątku/błędu
- 6. Wykonywanie javascript w PHP
- 7. Logowanie xmpp kończy się niepowodzeniem po uwierzytelnieniu
- 8. Czy można zatrzymać wykonywanie w javascript/jquery?
- 9. AudioSessionSetActive kończy się niepowodzeniem po przerwie
- 10. socat kończy się po podłączeniu ścisłej
- 11. okno WinForms zmienia wymiarów po napotkaniu połączenia asynchronicznego
- 12. Czy JVM kończy działanie po OutOfMemoryError
- 13. Jak kończy się niepowodzenie dynamic_cast?
- 14. Tryb debugowania VSCode zawsze kończy się w pierwszej linii
- 15. .NET StringBuilder - sprawdź, czy kończy się ciągiem
- 16. Wykonywanie javascript wewnątrz szablonu Handlebars
- 17. Czy można zapobiec tworzeniu się linii po tagach H2?
- 18. Django-haystack: rebuild_index kończy się niepowodzeniem (haystack.exceptions.SearchFieldError) po dodaniu linii `content_auto` potrzebnej do autouzupełniania
- 19. Dlaczego program javascript ES6 obiecuje kontynuować wykonywanie po rozwiązaniu?
- 20. Wykonywanie następnie po połowu
- 21. Wykonywanie javascript na serwerze IIS
- 22. Wykonywanie javascript po częściowym odświeżeniu informacji o updatepanel?
- 23. git push zawiesza się po linii Total
- 24. Wykonywanie JavaScript w czystym środowisku Python
- 25. Kończy się przestrzeń sterty
- 26. Dlaczego połączenie kończy się
- 27. Ręczne wykonywanie iteracji linii pliku | bash
- 28. NativeActivity nie kończy się
- 29. JavaScript lub jQuery ciąg kończy się funkcji użyteczności
- 30. Wykonywanie funkcji po czasie x
To nie powinno wpływać na operacje asynchroniczne. Kewlio. –
Co powiecie na bardziej skomplikowaną konfigurację z javascriptem wywołanym z wielu plików? – Kevin
@Kevin: Zobacz http://jsfiddle.net/TGBYV/. Zasadniczo to samo na podstawie pliku. – pimvdb