JavaScript: Erreur - "Attend un appel d'affectation ou de fonction et a plutôt vu une expression"?
Je suis en utilisant JSLint de s'assurer que JavaScript est "stricte" et j'obtiens l'erreur suivante:
Prévu une cession ou d'un appel de fonction et plutôt vu une expression
Sur le code suivant:
(my_var > 0 ) ? $("#abc").html(my_array.join('')) : $("#abc").html('<h2>Hello ' + persons_name);
Des idées pourquoi j'obtiens une erreur? Aussi, je suis en utilisant jQuery comme on le voit dans le code ci-dessus, dans le cas qui fait une différence.
source d'informationauteur HeatherK
Vous devez vous connecter pour publier un commentaire.
J'imagine que JSLint est malheureux puisque vous êtes à l'aide de l'opérateur ternaire, et vous ne faites rien à la valeur. Refactoring en l'équivalent:
permettrait d'éliminer l'erreur. Si pour quelque raison vous êtes vraiment attaché à l'utilisation de l'opérateur ternaire, la "bonne" façon de l'utiliser serait:
Je crois que c'est parce que l'opérateur ternaire évalue l'expression et renvoie une valeur qui devrait être attribué. Par exemple:
Cependant, vous l'utilisez comme un if/then/else. Alors que l'opérateur ternaire n'effectuer if/then/else, il est traditionnellement utilisé dans assignents.
EDIT: Comme additif: cette déclaration du sens pour vous?
vous utilisez une expression (une expression à l'aide de l'opérateur ternaire pour être précis) en une seule ligne: votre ligne est composée uniquement d'une expression.
c'est considéré comme une mauvaise programmation de la pratique dans de nombreuses langues, et peut être réécrite en utilisant un
if
déclaration pour rendre la ligne plus claire.Juste posé la même Q sans trouver celui-ci pour une raison...
Le ternaire renvoie une valeur qui n'est pas utilisé de sorte que vous êtes en abusant de la structure ternaire en n'utilisant pas la valeur (même si les appels de fonction sont réalisés comme prévu).