0
votes

Opérateur ternaire et affectation: meilleur moyen de ne pas appeler la même fonction deux fois

J'ai cette ligne de code: xxx

Comme vous pouvez le voir, j'appelle la fonction parseint deux fois.
Je me demandais s'il y a un moyen de faire cette affectation appelant la fonction une fois.


5 commentaires

Attribuez-le une fois avant d'arriver à cette ligne?


Tu as raison. Puisque je ne connais pas les nouvelles spécifications JavaScript, je vous demandais s'il y a un moyen de faire avec 1 ligne de code.


En outre, vous pouvez simplement utiliser const my_v = parseint (jQuery ('# id'). Val ()) || 0 - Pas besoin d'un opérateur conditionnel dans ce cas.


Notez que vous appelez également le jQuery ('# id') et val () fonctionne deux fois.


Vous pourrait le faire dans la même ligne, mais cela ne vaut pas la peine - rend plus difficile de lire.


4 Réponses :


1
votes

Assurez-vous d'utiliser un IIFE:

 (n => !isNaN(n) ? n : 0)(parseInt(jQuery('#id').val()))


0 commentaires

4
votes

Le résultat de parseint () code> sera un numéro ou nan code>, vous pouvez donc utiliser || code>:

const my_v = parseInt(jQuery("#id").val()) || 0;


3 commentaires

Oui, je me rends compte que nan est également un nombre; tu sais ce que je veux dire :)


Dans ce cas, Paysint est exactement ce dont j'ai besoin. Strips personnages et garder des nombres.


@GiaComom Ok, c'est juste mon avertissement standard car il peut surprendre les gens



0
votes

Si vous avez déjà une valeur entière à cordes, vous pouvez simplement prendre un numéro ou un zéro comme valeur par défaut.

const my_v = Math.floor(+jQuery('#id').val() || 0);


2 commentaires

Pourrait donner un résultat différent pour une valeur comme 10.A ou même 10.5


@Rajesh, la valeur est déjà un nombre, alors pas besoin de l'analyser à nouveau.



1
votes

avec un const code> Vous pouvez déclarer plus d'une variable.

const idValue = parseInt(jQuery('#id').val()), my_v = isNaN(idValue) ? 0 : idValue;


0 commentaires