skrócony zapis instrukcji If - wykonywanie fałszu

0

Stworzyłem funkcję, która reaguje na naciśnięcie klawisza Enter:

function stopEnter(e)
{
    // 1 wersja
    if (e.keyCode == 13)
    {
        e.preventDefault();
    }

    // 2 wersja
    (e.keyCode == 13) ? e.preventDefault() : false;
}

Czy drugi sposób (skrócony zapis) jest dopuszczalny? Czy mogę "wykonać fałsz"?

5

Możesz, ale czy warto?
można różne skróty robić np.:
e.keyCode == 13 && e.preventDefault()
(ja robię czasem coś w tym stylu foo.someMethod && foo.someMethod() jak chcę wywołać metodę obiektu tylko wtedy, gdy istnieje).
tylko pytanie o czytelność. Ify dobrze komunikują intencję, patrzysz na kod i rozumiesz, co ma robić, a np. tutaj:

(e.keyCode == 13) ? e.preventDefault() : false;

to po co to false? Nawet jeśli będzie działać, to może budzić wątpliwości "po co"?

poza tym e.keyCode jest już odradzane: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode

3
// 2 wersja
    (e.keyCode == 13) ? e.preventDefault() : false;

Ta wersja zapewnia pałowanie na code review :P

Ta instrukcja jest przeznaczona do tego żeby zwrócić wartość zależną od warunku logicznego. Czyli żeby zamiast:

let x;
if (blah) { x = 10; } else { x = 11; }

Móc napisać:

let x = (blah) ? 10 : 11

Nie należy jej używać w innych przypadkach.

I to też tylko wtedy gdy obie gałęzie są bardzo proste np. stała lub wywołanie funkcji. Przy bardziej skomplikowanej logice lepszy if lub osobna metoda.

0

Czyli za takie coś nie będzie pałowania :)

let x = (blah) ? mojaFunkcja(parametrA) : mojaFunkcja(parametrB)
2

Odnośnie

(e.keyCode == 13) ? e.preventDefault() : false;

Widziałem że community Webpacka używało czegoś takiego:

e.keyCode != 13 || e.preventDefault();

lub odwrotnie z &&
Do pomijania drugiej części ternary.

0

Można czytelniej :)

document.addEventListener('keydown', stopEnter);

function stopEnter(e)
{   
    if (e.code == 'Enter') 
...

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