À quoi sert un symbole plus avant une variable?


262

cela ressemble vraiment à une question simple mais je n'ai pas eu de chance à chercher. A quoi sert +den

function addMonths(d, n, keepTime) { 
    if (+d) {

veux dire?



4
Même problème, mais le titre de l'autre page ne décrit pas le cas général comme cela
géothèque

Réponses:


312

L' +opérateur renvoie la représentation numérique de l'objet. Donc, dans votre cas particulier, il semblerait que le si soit prédéterminé ou non par dun nombre non nul.

Référence ici . Et, comme indiqué dans les commentaires, ici .




Je me demande simplement ce qui est plus efficace, analyser une chaîne en un entier en utilisant la fonction parseInt ou en utilisant l'opérateur plus?
acarlstein

1
En quoi est-il différent de .parseInt()?
Daniel W.

1
@acarlstein du lien MDN dans la réponse: "Bien que la négation unaire (-) puisse également convertir des non-nombres, unaire plus est le moyen le plus rapide et préféré de convertir quelque chose en nombre , car il n'effectue aucune autre opération sur le nombre . " (juste pour une réponse "officielle")
AN

22

Il s'agit d'un opérateur unaire "+" qui donne une expression numérique. Ce serait la même chose que d*1, je crois.


12

Comme expliqué dans d'autres réponses, il convertit la variable en nombre. Particulièrement utile lorsque d peut être un nombre ou une chaîne fonction qui correspond à un nombre.

Exemple (en utilisant la addMonthsfonction dans la question):

addMonths(34,1,true);
addMonths("34",1,true);

alors l' +dévaluera à un nombre dans tous les cas. Évitant ainsi la nécessité de vérifier le type et de prendre différents chemins de code selon qu'il ds'agit d'un nombre, d'une fonction ou d'une chaîne qui peut être convertie en nombre.


+dn'évaluera pas un nombre avec le premier exemple d'invocation d'addMonths
Gus Crawford

c'est vrai, je ne sais pas ce que j'ai fait quand j'ai écrit ça. +function(){...}produira un NaNpas évaluer la fonction
RubenLaguna

4
Pourriez-vous modifier votre réponse pour supprimer le fou? C'est assez déroutant.
Buh Buh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.