Maintenant, avant que vous ne sautiez tous sur moi et que vous disiez "vous êtes trop préoccupé par la performance", permettez-moi de demander par la présente plus par curiosité que par nature trop zélée. Cela dit...
Je suis curieux de savoir s'il existe une différence de performances entre l'utilisation de l'opérateur && ("et") et les instructions if imbriquées. Existe-t-il également une différence de traitement réelle? C'est-à-dire que && toujours traite les deux instructions, ou arrêtera-t-il @ la première si la première échoue? En quoi cela serait-il différent des instructions imbriquées?
Exemples pour être clair:
A) && ("et") opérateur
if(a == b && c == d) { ...perform some code fashizzle... }
contre B) imbriquées si les instructions
if(a == b) {
if(c == d) { ...perform some code fashizzle... }
}
La différence de performance est négligeable. L'opérateur &&
Ne vérifie pas l'expression de droite lorsque l'expression de gauche évalue false
. Cependant, l'opérateur &
Vérifiera les deux indépendamment, peut-être que votre confusion est causée par ce fait.
Dans cet exemple particulier, je choisirais simplement celui qui utilise &&
, Car c'est mieux lisible.
Si vous êtes préoccupé par les performances, assurez-vous que a==b
est plus susceptible d'échouer que c==d
. De cette façon, l'instruction if
échouera tôt.
Un test de performance pourrait aider à clarifier les choses: http://jsperf.com/simey-if-vs-if
Il semble que la différence de performances soit incroyablement négligeable entre les deux; Cependant, comme @Gert l'a mentionné, un échec précoce améliore vraiment les choses.
Comme les if
imbriqués, &&
est paresseux.
L'expression a && b
n'évaluera b
que si a
est véridique.
Par conséquent, les deux cas doivent être complètement identiques, tant en termes de fonctionnalités que de performances.