Dlaczego w tym przypadku IDE sugeruje średnik na końcu linii, skoro nie jest wymagany?

0

Robię sobie zadania z funkcją i funkcją strzałkową. Ten sam kod przerabiam na różne funkcje. Dlaczego przy funkcji strzałkowej IDE sugeruje średnik po klamrze pomimo, że w przykładach jakie są w internecie nie ma na końcu średnika? Dodam, że bez średnika wszystko działa, ale jednak dostaję komunikat, że całość nie jest zakończona.

const myFunction4 = (p1, p2) => {const suma = p1 * p1 + p2 * p2; return Math.sqrt(suma);}; // TU
console.log(myFunction4(3, 4));
5

W JSie średniki są, technicznie rzecz biorąc, zbędne - można w ich miejsce wykorzystywać znaki nowej linii; tym niemniej, dla czytelności, ogólnie zalecane jest stosowanie średników [1].

Mając to w pamięci, możemy przyjrzeć się przytoczonemu przez Ciebie fragmentowi - jest on pod względem ostrzeżenia ekwiwalentny temu:

const myConst = 5

Środowisko podpowiada Ci, abyś dla klarowności zrobił z tego:

const myConst = 5;

I to wszystko.

[1] a już na pewno w przypadku początkujących

0

musisz sobie podpiąć jslint i odpowiednio ustawić to bedziesz miał takie formatowanie i zgłaszanie błędów jakie chcesz.

1

Średniki, a właściwie ich brak może powodować błędy. Dzieje się tak dlatego, że interpreter stawia średniki za programistę i czasem może ustawić średnik tam gdzie nie potrzeba, albo wręcz przeciwnie nie ustawić tam gdzie powinien. Z tego też powodu środowisko podpowiada użycie średników, ponieważ ich używanie nic nie boli, a może zapobiec trudnym do zdebuggowanie błędom.

Przykład kodu, który zadziała źle ze względu na brak średników:

var a = function () {
  console.log('a')
}

(function () {
  console.log('b')
})()

Prawidłowo sformatowany kod:

var a = function () {
  console.log('a');
}; //brak tego średnik powodował błąd

(function () {
  console.log('b');
})();

W VSCode może sobie podpiąć lintera i go skonfigurować pod swój styl kodowania, jednym z najpopularniejszych jest eslint. Oprócz tego masz jeszcze automatyczne formattery kodu, popularny jest prettier,.

0

@Haskell es6 nakazuje stawianie średników tylko w kilku przypadkach w pozostałych jest rzucane ostrzeżenie, jeśli się postawi średnik.

1
mr_jaro napisał(a):

@Haskell es6 nakazuje stawianie średników tylko w kilku przypadkach w pozostałych jest rzucane ostrzeżenie, jeśli się postawi średnik.

Nie masz racji. ES6 zaleca stawianie średników w pewnych sytuacjach, podobnie nie zaleca stawiania w innych. Jednak generalnie nie nakazuje niestawiania średników, to jest nieprawda. Są sytuacje gdy średnik jest zbędny np. na końcu deklaracji funkcji, na końcu deklaracji klasy, po deklaracji metody w klasie. Postawienie tam średnika nie spowoduje błędu, ale jest niepotrzebne, ponieważ nawet interpreter tam nie stawia średników, stąd IDE i linter rzuca ostrzeżenie.

1
Haskell napisał(a):

Są sytuacje gdy średnik jest zbędny np. na końcu deklaracji funkcji, na końcu deklaracji klasy, po deklaracji metody w klasie. Postawienie tam średnika nie spowoduje błędu, ale jest niepotrzebne, ponieważ nawet interpreter tam nie stawia średników, stąd IDE i linter rzuca ostrzeżenie.

Swoją drogą nie ogarniam tej maniery i to jeszcze od czasów Pascala.
Co z tego, że niby jest zbędny, bo i tak wiadomo, że to już koniec bloku kodu?
Ale to przecież:

  • zaburza spójność,
  • może generować durne błędy przy późniejszym powielaniu / dopisywaniu / usuwaniu linii.
    I wtedy za każdym razem trzeba pamiętać, która linia jest ostatnia, żeby w niej nie stawiać średnika, a w innym wypadku go uzupełnić.

Jak dla mnie to bez sensu i ani jest estetyczne, ani praktyczne, więc nie kumam kto i po co w ogóle taki myk wymyślił :(

0

@Freja Draco: ja mam ustawionego ide i eslinta tak, ze wskazuje mi sam gdzie nie ma być średnik albo gdzie ma być co więcej jak źle go podam to przy budowaniu mi wywali błąd tak że ja problemów nie mam i nie wydłuża to mi pracy a średników na prawdę niewiele jest w moim kodzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1