Zostało jednak wyraźnie powiedziane, choć opinia, że rezygnacja z nawiasów klamrowych w if
instrukcji jednowierszowej nie jest idealna ze względu na łatwość konserwacji i czytelność.
Ale co z tym?
if (lemons) { document.write("foo gave me a bar"); }
Jest jeszcze bardziej skompresowany, a jeśli zostanie rozszerzony, nawiasy klamrowe nie zostaną zapomniane. Czy są jakieś rażące problemy, a jeśli nie, jakie są tego względy? Wydaje mi się, że nadal jest bardzo czytelny, przynajmniej tak samo jak operator trójskładnikowy. Wydaje mi się, że operatory trójskładnikowe nie są tak sugerowane ze względu na czytelność, chociaż wydaje mi się, że taki wniosek nie jest tak jednogłośny.
Zły bliźniak we mnie chce to zasugerować, chociaż oczywiście składnia nie jest do tego przeznaczona i prawdopodobnie jest to po prostu zły pomysł.
(syntax) ? document.write("My evil twin emerges"): "";
źródło
document.write("My evil twin emerges") if lemons
variable = (condition) ? true-value : false-value;
.) Powodzenia.Odpowiedzi:
Widziałem zachowanie
&&
operatora powodujące zwarcie , chociaż ludzie, którzy nie są do tego przyzwyczajeni, mogą mieć trudności z odczytaniem lub nawet nazwać to anty-wzorem:Osobiście często używam pojedynczej linii
if
bez nawiasów, tak jak to:Jeśli muszę dodać więcej instrukcji, umieszczę je w następnym wierszu i dodam nawiasy. Ponieważ moje IDE wykonuje automatyczne wcięcia, zastrzeżenia dotyczące utrzymania tej praktyki są dyskusyjne.
źródło
Używam tego w ten sposób:
źródło
alert(lemons?"please give me a lemonade":"then give me a beer")
Możesz użyć tego formatu, który jest powszechnie używany w PHP:
źródło
lemon
.document.write(lemon ? "foo gave me a bar" : "if condition is FALSE");
:)Ta jedna linia jest znacznie czystsza.
Wolę to. mam nadzieję, że to komuś pomoże
źródło
mogę tego użyć,
wyjaśnienie: jeśli
lemons
istnieje, to daj mialert("please give me a lemonade")
else
alert("then give me a beer")
źródło
lemons? alert("please give me a fancy beer with a lemon wedge in it"): alert(please give me a beer")
FTFY// Kolejny prosty przykład
źródło
var a = 11; alert(a === 10);
?alert(a === 10 ? "true" : "false")
alert(a===10)
jak powiedział Manu.Jak wiele osób powiedziało, jeśli szukasz rzeczywistej 1 linii, jeśli:
jest preferowany. Jeśli jednak chcesz zrobić if / else, trójka jest twoim przyjacielem (a także super cool):
RÓWNIEŻ:
Widziałem jednak jeden bardzo fajny przykład. Krzyczy do @ Peter-Oslson dla &&
Wreszcie, nie jest to instrukcja if, ale wykonywanie rzeczy w pętli za pomocą map / redukcja lub Promise.resolve () jest również zabawne. Krzyczy do @brunettdan
źródło
Jak już wspomniano, możesz użyć:
i styl
lub
styl bez uchwytów
powrót zwarciowy
Jeśli jednak chcesz użyć
if
instrukcji jednowierszowej do zwarcia funkcji, musisz użyć wersji bez wspornika, takiej jak:tak jak
da ci
SyntaxError: Unexpected keyword 'return'
źródło
lemons
(jeśli to jest falsey) - chcesz zwrócić „foo dał mi pasek”, gdylemons
jest to prawdą.Widziałem wiele odpowiedzi z wieloma głosami opowiadającymi się za użyciem operatora trójskładnikowego. Trójskładnik jest świetny, jeśli a) masz alternatywną opcję i b) zwracasz dość prostą wartość z prostego warunku. Ale...
Pierwotne pytanie nie miało alternatywy, a operator trójskładnikowy z tylko jedną (rzeczywistą) gałęzią zmusza do zwrócenia błędnej odpowiedzi.
lemons ? "foo gave me a bar" : "who knows what you'll get back"
Myślę, że najczęstszą odmianą jest
lemons ? 'foo...' : ''
i, jak się dowiesz po przeczytaniu niezliczonej ilości artykułów dla dowolnego języka na temat prawdy, fałszu, prawdy, falsey, null, zero, pustego, pustego (z naszym bez?), Wchodzisz pole minowe (choć dobrze udokumentowane pole minowe).Gdy tylko jakakolwiek część trójki stanie się skomplikowana, lepiej skorzystać z bardziej wyraźnej formy warunkowej.
Długa droga do stwierdzenia, że głosuję
if (lemons) "foo"
.źródło
Można to również zrobić za pomocą pojedynczej linii z
while
pętlami iif
tak:Działa również z
while
pętlami.źródło
Przykład funkcji strzałek:
W obietnicach:
Inaczej:
Jeśli jest to zwykły warunek, wolę używać if (wartość), gdy tylko jest to możliwe, ponieważ słowo if na początku oświadczenia mówi więcej o tym, co się dzieje, niż paranteza i znaki zapytania.
źródło
Nawet przypisanie operacji możemy również wykonać za pomocą nawiasów okrągłych
źródło