for (...) bez instrukcji

for (...) bez instrukcji
DO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 165
2

Kolejne pytanie dot. poprawności zapisu.
Taka konstrukcja. Formalnie niezgodna z tym, co stanowi MDN, gdyż instrukcja powinna być zapisana za pętlą. Jednak wpisana w CodePen działa. Do sprawdzenia natchnęła mnie lektura czegoś o PHP. To wielki błąd czy w ogóle co, bo nie ukrywam - sama się zdziwiłam.

Kopiuj
for(i = 1; i<=10; console.log(i++));
Hispano-Suiza
  • Rejestracja: dni
  • Ostatnio: dni
4

Pisana w konsoli też zadziała. Żadna to filozofia. Bardziej chodzi o czytelność kodu, i ogólnie przyjęte standardy. Jak piszesz dla siebie to możesz nawet za pomocą emotikonek. Pamiętaj, że Twój kod czytają też inni, i nie każdego kręci taka konstrukcja.
Poza tym to zadziała w przypadku wypisania za pomocą console.log, a co jeśli for jest bardziej rozbudowany, i zawiera więcej kodu? Problem solved :P

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
3

Formalnie niezgodna z tym, co stanowi MDN, gdyż instrukcja powinna być zapisana za pętlą.

Formalnie zgodna z tym, co stanowi MDN, ponieważ wspominają: [final-expression is] An expression to be evaluated at the end of each loop iteration. [...] Generally used to update or increment the counter variable. - żadna część tego zdania nie wyklucza wyrażeń w stylu i = f(i), console.log(i += i); itd.

Silv
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
3

Ciekawostką pozostaje fakt, że takie coś też przejdzie*:

Kopiuj
for(let i = 1; i <= 10; {
  x: console.log("A teraz, proszę Państwa, wypisujemy liczbę całkowitą " + i++)
}.x);

Jednak zdecydowanie odradzam takie pisanie. W JavaScripcie efekty uboczne mogą być zaskakujące.


* UPDATE: A przynajmniej przejdzie na Firefoksie 67.0.

DO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 165
1

Dziękuję, wszystkim, pozostaje się zastosować.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.