Średniki nie zawsze są obowiązkowe, ale zawsze polecam ich używanie. Zobacz ECMAScript spec dla przepisów dotyczących automatycznego wstawiania średnik:
Pewne oświadczenia ECMAScript (pustym stwierdzeniem, zmienna oświadczenie, oświadczenie wyrażenie, do-while, instrukcja continue, break oświadczenie, return, i rzucać oświadczenie) musi być zakończone średnikami. Takie średniki mogą zawsze pojawiać się wyraźnie w tekście źródłowym . Dla wygody jednak takie średniki można w pewnych sytuacjach pominąć z tekstu źródłowego . Sytuacje te są następujące: opisano, mówiąc, że średniki są automatycznie wstawiane do strumienia kodu źródłowego w tych sytuacjach.
Aktualizacja (w celu dalszego wyjaśnienia)
Prawdopodobnie najbardziej powszechna sytuacja używane, aby pokazać, dlaczego automatycznego wstawiania średnik może być złe jest to, że poruszone przez @sissonb w innej odpowiedzi. Rozważmy następujący:
function something(a, b) {
return
a + b;
}
Co można oczekiwać jest dla nowej linii mają być ignorowane, a kod interpretowany jako:
function something(a, b) {
return a + b;
}
Niestety automatycznego wstawiania średnik wchodzi w grę, a Kod jest właściwie interpretować tak:
function something(a, b) {
return;
a + b;
}
i pusty return
stwierdzenie oznacza, że funkcja zwraca undefined
. Więc zamiast ładnej sumy dwóch argumentów, otrzymujesz undefined
i potencjalnie kończy się to bardzo nieporozumieniem co do tego, gdzie popełniłeś błąd! Właśnie dlatego całkowicie zgadzam się z tym stwierdzeniem w twoim pytaniu, że automatyczne wstawienie średnika jest okropnym błędem.
Patrz: http://stackoverflow.com/questions/7219541/what-is-the-difference-between-semicolons-in-javascript-and-in-python/7219549#7219549 i inne odpowiedzi do pytanie – NullUserException
Twoje dwa stwierdzenia mają zarówno średniki, jak i różne. – Nightfirecat
@Nightfirecat - Początkowo nie wyglądały tak, jak wygląda edycja NullUserException, w której wstawiono średnik. Edit: but then removed it again! –