espressioni booleane negative e desiderose booleane OR [chiuso]

0

Mi imbatto in questo tipo di espressioni e ho difficoltà a leggerlo. Come lo leggi correttamente per vedere se è corretta la logica durante il debug.

if (!(userLoggedIn || isAdmin)) {
    console.log('User does not have rights');
    }
    
posta airnet 24.10.2014 - 03:03
fonte

3 risposte

3

In primo luogo amplia la stenografia

if (! (userLoggedIn = true  || isAdmin = true ))

Quindi sostituisci gli operatori logici con le parole

if (not (userLoggedIn = true or isAdmin= true))

Quindi traduci

If the user is not either logged in or admin
{
    //do something
}

Una volta che ci hai pensato in questo modo la prima volta, l'originale diventa piuttosto banale da leggere in una volta sola - improvvisamente indica chiaramente "se l'utente non è loggato o amministratore" senza alcuna necessità di tradurre, questo è anche la bellezza dei buoni nomi delle variabili Booleani visti in questo esempio

if (!(userLoggedIn || isAdmin))
    
risposta data 24.10.2014 - 03:11
fonte
2

Generalmente,! (a || b) = > (! a & &! b),

so! (userLoggedIn || isAdmin) = > ! userLoggedIn & & ! isAdmin,

che è molto più chiaro per me, probabilmente a causa della mancanza di parentesi

    
risposta data 24.10.2014 - 15:45
fonte
0

Per me la logica sottostante è:

userLoggedIn || isAdmin dice "l'utente deve essere registrato o in modalità amministratore".

if(!...) dice "Se non è il caso, allora ...".

Prendendo insieme il tuo codice significa "se non è il caso in cui l'utente è connesso o è in modalità admin, quindi stampa il messaggio di errore".

Questo mi fa chiedere se non volevi dire che l'utente deve essere loggato e avere i diritti di amministratore. In tal caso, devi sostituire || di && .

    
risposta data 24.10.2014 - 15:58
fonte

Leggi altre domande sui tag