2010-07-05 33 views
3

Désolé si c'est un genre de "Logical Operators 101" genre de question. J'ai regardé mon écran pendant 15 minutes en essayant d'envelopper ma tête, mais je suis coincé.Puis-je simplifier cette instruction conditionnelle, qui utilise l'opérateur de négation logique?

Y at-il une manière plus concise/élégante phrase qui suit (ce qui est la syntaxe JavaScript, mais ce n'est pas une question dépendant de la langue):

if (!something && !something_else) { 
    // do something 
} 

Sur la base de l'expérimentation, cela ne semble pas être l'équivalent logique:

if (!(something && something_else) { 
    // do something 
} 

En outre, personne ne peut recommander une ressource en ligne pour approfondir cette recherche sur des questions comme celles-ci? Je suppose que ce genre de chose est couvert de façon abstraite dans les programmes d'informatique, et c'est une lacune essentielle dans mes connaissances en programmation que j'aimerais vraiment combler. Merci!

Répondre

10
(Not A) And (Not B) 

équivaut à:

Not (A Or B) 

Il est une application de De Morgan's laws

+2

+1 Casser la ligne, changer le signe! –

+0

Merci, Mitch! Toutes les réponses correctes ici - et tous sont très appréciés - mais j'apprécie aussi le lien que vous avez inclus. C'est exactement ce que je cherchais. – Bungle

+0

@Bungle. Vous devriez accepter sa réponse alors. Il comprendra que je suis sûr – Ben

3

L'expression correcte devrait être:

if (!(something || something else)) { 
    // do something 
} 

Lorsque vous appliquez une négation, il commute les opérateurs entre ET et OU.

3

Je pense, vous avez besoin

if (!(something || something_else)) { 
    // do something 
} 

! Quelque chose & &! Signifie something_else "ni quelque chose et ne something_else", ce qui équivaut à "ni (quelque chose ou something_else)"