Javascript - Opérateur Ternaire avec Plusieurs Instructions
Est-ce JavaScript valide? J'ai vu un exemple où quelqu'un utilise des virgules dans l'opérateur ternaire conditions, et il a été marqué comme une erreur dans mon éditeur, et l'exemple n'est pas exécuté dans le navigateur Chrome. Cependant, il a couru dans Firefox. Une fois que j'ai converti tous les ternaires déclarations de if/else, l'application a couru sur Chrome.
a!==b ? (a=1, b=2) : (a=2, b=1)
Edit:
Il s'agit de l'instruction dans le code:
a!==0?b<0?(h=b/a,e=h-1,f=-2*b+2*a*e,i=-2*b+2*a*h,d=2*h*a-2*b-2*a):(h=b/a,e=h+1,f=2*b-2*a*e,i=2*b-2*a*h,d=-2*h*a+2*b):d=h=e=f=i=0
Vous devez vous connecter pour publier un commentaire.
Oui, c'est valable, et il fonctionne très bien sur Chrome:
JS:
Je ne dis pas que c'est la distance d'une bonne idée dans le code humains sont destinés à lire. 🙂 J'attends jamietre est correct dans les commentaires quand il/elle dit, il semble que le résultat de minification.
La opérateur virgule est un opérateur binaire (un opérateur acceptant deux opérandes). Il évalue sa gauche opérande (donc causer des effets secondaires, il a, comme d'affectation), les lancers, qui entraînent à l'écart, puis evalutes sa droite opérande (ainsi à l'origine de ses effets secondaires le cas échéant) et prend ce résultat comme valeur de résultat. Si vous avez plusieurs virgule opérateurs dans une rangée, l'expression globale est évaluée dans l'ordre, de gauche à droite, avec le résultat final étant la valeur résultant de la plus à droite opérande de l'évaluation.
Et bien sûr, vous savez l'opérateur conditionnel (un opérateur ternaire — on accepter de trois opérandes) est utilisé pour choisir l'un des deux sous-expressions à évaluer, sur la base d'une expression initiale.
De sorte que la ligne est très expressif......avec un total de sept* les différentes expressions à l'intérieur.
Donc, dans cet exemple, le résultat de l'expression globale est de 2 si
a !== b
au départ, ou1
sia === b
d'abord, avec les effets secondaires de la misea
etb
.C'est les effets secondaires qui en font, à mon avis, un choix discutable. Et bien sûr, il n'y a pas de raison d'utiliser l'opérateur virgule si la gauche opérande n'est pas avoir des effets secondaires.
* Oui, sept de 'em emballé dans que, dans l'ensemble ternaire:
a !== b
a = 1
b = 2
a = 2
b = 1
Re édition avec la déclaration proprement dite, que l'on travaille trop:
JS:
CSS:
Mais wow, j'espère que ce n'est minimisé, car si une personne a écrit que, ils doivent vraiment avez quelque chose contre quelqu'un qui est censé le maintenir plus tard... 😉
Oui:
et:
Que vous pouvez analyser, de changer l'opérateur d'égalité réagit correctement à notre test si vous regardez les résultats.
Ou vous pouvez faire ceci :
Lire ici sur opérateur virgule.
Étendre sur ce sujet avec l'ES6 exemple de code. Si vous utilisez un côté du VRAI : FAUX argument pour itérer thru tous les cas, dans un CAS, il est judicieux de séparer le code comme si c'est un switch | case déclaration.
De nidification implique qu'il y a de la ramification de la logique, alors qu'il est logiquement imbriquées, l'écriture imbriquée SI complique ce que nous faisons dans mon exemple. Comme un avocat au cours d'expliquer un problème à un jury. OMI, vous voulez expliquer le point dans sa forme la plus simple. Par exemple, je trouve cet exemple de la façon la plus logique d'exprimer imbriquée ifs où le VRAI est exécuté. La finale de faux est ton dernier else {}
choreDoor est soit 0,1 ou 2: