2016-06-21 3 views
0

J'essaie de comprendre pourquoi le code ci-dessous ne fonctionne pas même si une variante fonctionne. Je crois comprendre finalement les deux signifient la même chose. (Je suis assez sûr que je me trompe, mais je ne sais pas pourquoi)Annulation de plusieurs conditions entières ou individuelles dans une boucle While

cela fonctionne

while (!(luc === 'rock' || luc === 'paper' || luc === 'scissor')) { 

cela ne fonctionne pas

while (luc !== 'rock' || luc !== 'paper' || luc !== 'scissor')) { 

ici est le contexte complet

var uc = prompt('Choose between Rock, Paper and Scissor') 
var luc = uc.toLowerCase(); 
while (!(luc === 'rock' || luc === 'paper' || luc === 'scissor')) { 
    var uc = prompt('You did not select between rock paper and scissor') 
    var luc = uc.toLowerCase(); 
} 
console.log(uc) 
+0

son '! =' Pas '! =='. Essayez '! = = Cela fonctionnera. ET vous avez un extra ')' à la fin de l'instruction while. Faites ceci 'while (luc! = 'Rock' || luc! = 'Paper' || luc! = 'Scissor')' – hulkinBrain

+2

Ceci pourrait vous aider à comprendre la logique des énoncés https://en.wikipedia.org/ wiki/De_Morgan% 27s_laws –

Répondre

0

l'opérateur or (||) recherche si l'une ou l'autre de ces conditions est vraie. Le cas qui vous convient est donc de savoir si l'entrée de l'utilisateur est faite de pierre, de papier ou de ciseaux, puis annule cette valeur.

Le deuxième cas recherche par exemple si l'entrée n'est pas rock. Supposons que l'entrée est en ciseaux (entrée valide) mais que la vérification de n'est pas rock sera vraie et que l'ensemble de la chaîne ou de la chaîne deviendra vrai en raison de la présence d'au moins une valeur de vérité.