Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Moduł ES6, przerwanie wykonywania
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
viking
Mały problem z wiedzą.
Mam skrypt w ES6 (przez Babel) i potrzebuję w jednym z modułów przerwać wykonywanie najlepiej od razu na początku. W jaki sposób to zrobić?

  1. if (true) {
  2. // i co tutaj żeby wyjść? return nie zadziała bo to nie funkcja
  3. }
  4.  
  5. // jakiś kod dalej
trueblue
http://stackoverflow.com/a/9298915
viking
Tak też kombinowałem ale to trochę bez sensu bo muszę zebrać ten błąd i go obsłużyć a formalnie tam błędu żadnego nie ma. Po prostu nie jest spełniony warunek.
Comandeer
A do czego Babel buduje moduły ES6? Bo jeśli do funkcji, to… return może starczyć wink.gif Dopóki będziesz transpilował kod, taki hack mógłby działać. A jak na razie nie widać, żeby ktoś się spieszył z natywną implementacją modułów…
viking
Też tak myślałem, niestety podczas budowania sypie błędem na tym return.
PrinceOfPersia
a nie możesz włożyć całego kodu w IIFE?

[JAVASCRIPT] pobierz, plaintext
  1. (function () {
  2. // ....
  3. if (someCond) return;
  4. //...
  5. })();
[JAVASCRIPT] pobierz, plaintext


wtedy raczej problemów nie będziesz mieć.
viking
Mogę i tak zrobię ale trochę to dziwne.
PrinceOfPersia
Może dziwne patrząc "z boku", ale w świecie JavaScript IIFE się stosuje bardzo często, więc nie ma nic dziwnego w tym rozwiązaniu raczej.
Comandeer
Nie ma. IIFE to jeden z podstawowych elementów JS: http://benalman.com/news/2010/11/immediate...ion-expression/ (chociaż wieść gminna niesie, że w ES6 jest uważane za anti-pattern)
viking
Dziwne w takim sensie że całość jest i tak już zamknięta wewnątrz funkcji (po kompilacji). Tak samo jak moduły AMD gdybym to pisał normalnie .
Comandeer, a ty jak piszesz która metodę stosujesz do wytworzenia prywatnych metod? Są mapy ale to się słabo używa. Niektórzy widzę mają to gdzieś w obecnej formie i po prostu używają prefiksow_ (jak w PHP kilka lat temu).

  1. class test {
  2. //brakuje coś w stylu
  3. Private get color() {}
  4. }
Comandeer
Szczerze to po prostu deklaruje prywatne jako funkcje obok klasy, ale wewnątrz modułu i klasa ma do nich dostęp. Ale WeakMap też jest fajnym pomysłem i też go czasami stosuję: https://github.com/Comandeer/LazyPromise/bl...master/index.js
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.