Comment le code ci-dessous s'exécute-t-il ?
if(a=2 && (b=8))
{
console.log(a)
}
SORTIE
a=8
Comment le code ci-dessous s'exécute-t-il ?
if(a=2 && (b=8))
{
console.log(a)
}
SORTIE
a=8
@CompuChip - Yep, l'assignation assigne 8
a b
mais l'assignation renvoie également la valeur assignée, donc c'est correct.
C'est généralement une mauvaise idée d'assigner des variables à l'intérieur d'un fichier de type if
comme cela. Cependant, dans ce cas particulier, vous faites essentiellement ceci :
if(a = (2 && (b = 8)));
El (b = 8)
retours de pièces 8
donc on peut le réécrire comme suit :
if(a = (2 && 8))
El &&
L'opérateur renvoie la valeur de la partie droite si la partie gauche est considérée comme vraie, donc 2 && 8
renvoie à 8
donc on peut réécrire comme suit :
if(a = 8)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
8 votes
Pourquoi mettre
b=8
dans les parenthèses mais pasa=2
? On dirait presque qu'il s'agit d'une tentative de trolling.0 votes
Quand vous avez vu
b=
pourquoi n'avez-vous pas pris la peine de vérifier la valeur deb
? Cela aurait donné suffisamment d'indices...0 votes
@NiklasB. Si je ne mets pas b=8 entre parenthèses, j'obtiens une erreur parce qu'il exécute quelque chose comme a = (2 && b=8). Je ne comprends pas bien cette erreur, mais la raison pour laquelle il faut mettre b=8 entre parenthèses est qu'il faut donner une priorité élevée à
b=8
ou vous pouvez simplement dire, pour éviter les erreurs.1 votes
@Jay Donc, vous saviez déjà que le code est analysé en tant que
a = (2 && (b=8))
. Cela aurait permis de comprendre le problème. Je m'attendrais au moins à un minimum de débogage avant de poster une question sur Stack Overflow.