Que fait le +d
sur
function addMonths(d, n, keepTime) {
if (+d) {
C'est-à-dire ?
Que fait le +d
sur
function addMonths(d, n, keepTime) {
if (+d) {
C'est-à-dire ?
Docs : [developer.mozilla.org/fr/JavaScript/Référence/Opérateurs/](https://developer.mozilla.org/en/JavaScript/Reference/Operators/Arithmetic_Operators#.2b_(Unary_Plus%29)
Lien fonctionnel : [developer.mozilla.org/fr/US/docs/Web/JavaScript/Référence/](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus_())
Je me demande juste ce qui est le plus efficace : analyser une chaîne de caractères en un nombre entier en utilisant la fonction parseInt ou en utilisant l'opérateur plus ?
Opérateur +
est un opérateur unaire qui convertit la valeur en un nombre. Vous trouverez ci-dessous un tableau avec les résultats correspondants à l'utilisation de cet opérateur pour différentes valeurs.
+----------------------------+-----------+
| Value | + (Value) |
+----------------------------+-----------+
| 1 | 1 |
| '-1' | -1 |
| '3.14' | 3.14 |
| '3' | 3 |
| '0xAA' | 170 |
| true | 1 |
| false | 0 |
| null | 0 |
| 'Infinity' | Infinity |
| 'infinity' | NaN |
| '10a' | NaN |
| undefined | NaN |
| ['Apple'] | NaN |
| function(val){ return val }| NaN |
+----------------------------+-----------+
Opérateur +
renvoie une valeur pour les objets qui ont implémenté la méthode valueOf
.
let something = {
valueOf: function () {
return 25;
}
};
console.log(+something);
N'ajoutez pas de réponse si vous n'êtes pas totalement sûr de ce qui se passe. J'ai été confondu par le "je crois", veuillez le changer si vous en êtes sûr.
@Nemesius, bon point. La partie "je crois" de cette réponse tient toujours, même si 10 ans se sont écoulés depuis que j'y ai répondu. Je ne suis pas complètement sûr de pouvoir imaginer tous les cas possibles où les deux "hacks" JavaScript fonctionnent de la même manière. Et si 'string'*1
renvoie quelque chose de différent de +'string'
? Donc, c'est à peu près la même chose - je crois :)
Comme expliqué dans d'autres réponses, il convertit la variable en un nombre. Spécialement utile lorsque d
peut être soit un nombre, soit une chaîne de caractères qui évalue un nombre.
Exemple (en utilisant le addMonths
dans la question) :
addMonths(34,1,true);
addMonths("34",1,true);
alors le +d
sera évalué à un nombre dans tous les cas. Ainsi, il n'est pas nécessaire de vérifier le type et d'emprunter des chemins de code différents selon que l'on se trouve en présence de d
est un nombre, une fonction ou une chaîne de caractères qui peut être convertie en un nombre.
C'est vrai, je ne sais pas ce que j'ai fait quand j'ai écrit ça. +function(){...}
produira un NaN
ne pas évaluer la fonction
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Duplication possible de Que fait le signe plus dans "return +new Date" ?
7 votes
Même problème, mais le titre de l'autre page ne décrit pas le cas général comme celui-ci le fait.
2 votes
Duplication possible de Qu'est-ce que
+…
signifie en JavaScript