Blog ArobaseErreur 404 – Ou pas !

N’avez vous jamais rencontré en Javascript l’opérateur !! ..? Oui oui, un double point d’exclamation.
Je l’ai rencontré pour la première fois ce matin, et j’ai voulu en savoir un peu plus.

Sauf que c’est pas évident de trouver une bonne réponse, le mieux fût donc de tester.

function test1() {
    var test = 'du texte' ;
    console.log(typeof(test)) ;
}

Tout d’abord, on va se créer une variable contenant du texte, et afficher son type.
Le code va tout logiquement me renvoyer ‘string’. Normal.

Maintenant imaginons que je veux vérifier si la variable test est définie ou non.
Je pourrais faire ainsi :

function test2() {
    var test = '' ;
    if (test === null || test === undefined || test == '') {
        // Ben oui car on aurait pu définir test de plusieurs façon :
        // var test ;
        // var test = null ;
    }
}

Eh ben c’est là qu’intervient le !!
Détaillons.

Le premier ! va transformer notre variable en Booléen :

var test ;
console.log(!test) // Réponse : true

Maintenant on rajoute un deuxième !

var test ;
console.log(!!test) // Réponse : false

Voila je viens de tester si ma variable test contient quelque chose, ou si elle est :

  • null
  • undefined
  • vide ( var test = «  » )

Il y a un problème quand même, cela ne fonctionne pas sur les tableaux et les objets.
Par exemple :

function test3() {
    var test = [] ;
    console.log(!!test) ; // Réponse : true (alors que le tableau est vide)
}

function test4() {
    var test = {} ;
    console.log(!!test) ; // Réponse : true (alors que l'objet est vide)
}

Voila en espérant avoir pu éclairer légèrement vos lanternes ..

Cette entrée a été posté dans Développement, Javascript et taggé , . Enregistrer le permalien.

2 réponses à Javascript : Le !!

  1. NiKo a dit:

    Cool 🙂

    Et maintenant, un petit cours sur le ~~ ?

    • Jerome a dit:

      Effectivement je pourrais faire un petit post sur le ~~ qui est une alternative au Math.floor().

      Rentrer un peu plus en détail dans son fonctionnement pourrait être sympa 🙂

      Merci pour la suggestion.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Recherche par catégorie