Voir le flux RSS

Bovino

[Actualité] La saviez-vous : comment appliquer une méthode à un numérique littéral

Noter ce billet
par , 08/04/2015 à 15h42 (1353 Affichages)
En JavaScript, il existe deux méthodes pour appeler une méthode ou récupérer un propriété d'un objet : la syntaxe à crochets et la syntaxe pointée, la plus courante.
Par exemple, pour récupérer la taille d'une chaine ou d'un tableau, on utilisera
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
console.log('foo'.length);  // 3
console.log([1,2,3].length);  // 3

Avec la notation à crochets, la syntaxe deviendra
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
console.log('foo'['length']);  // 3
console.log([1,2,3]['length']);  // 3

Et cela fonctionne aussi bien avec les méthodes
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
console.log('foo'['replace']('foo', 'bar'));  // bar
console.log([1,2,3]['push'](4));  // 4

Tout cela fonctionne parfaitement avec tous les objets possibles.

Tous ? Vraiment ?
En fait, pas vraiment. Un problème survient avec les littéraux numériques entiers.
En effet, si l'on fait
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
console.log(12.5.toFixed(2));  // 12.50
Mais
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
console.log(12.toFixed(2));  // SyntaxError: identifier starts immediately after numeric literal
c'est le drame... En effet, dans le cas des littéraux numériques, le point sert à séparer la partie entière de la partie décimale et dans le dernier exemple, toFixed(2) n'est pas une partie décimale valide.

L'astuce va être alors de mettre deux points à la suite et le tour est joué :
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
console.log(12..toFixed(2));  // 12.50

Bien entendu, c'est une question que vous ne vous êtes jamais posée parce qu'en toute franchise, les cas où cela peut servir sont tellement rares qu'on se demande même s'il en existe !
Mais au moins, ça vous permettra de briller lors des dîners entre JavaScripteurs.

Envoyer le billet « La saviez-vous : comment appliquer une méthode à un numérique littéral » dans le blog Viadeo Envoyer le billet « La saviez-vous : comment appliquer une méthode à un numérique littéral » dans le blog Twitter Envoyer le billet « La saviez-vous : comment appliquer une méthode à un numérique littéral » dans le blog Google Envoyer le billet « La saviez-vous : comment appliquer une méthode à un numérique littéral » dans le blog Facebook Envoyer le billet « La saviez-vous : comment appliquer une méthode à un numérique littéral » dans le blog Digg Envoyer le billet « La saviez-vous : comment appliquer une méthode à un numérique littéral » dans le blog Delicious Envoyer le billet « La saviez-vous : comment appliquer une méthode à un numérique littéral » dans le blog MySpace Envoyer le billet « La saviez-vous : comment appliquer une méthode à un numérique littéral » dans le blog Yahoo

Commentaires

  1. Avatar de kolodz
    • |
    • permalink
    En effet, c'est pour briller en soirée !

    Car, dans tout les cas, il est aussi possible de faire :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var MON_PRIX =12;
    console.log(MON_PRIX.toFixed(2)); //12.00
    Ce qui est un poile plus déclaratif, mais ce n'est pas plus mal pour savoir ce qu'on manipule !

    D'ailleurs, il y a une erreur dans ton commentaire résultat !
    console.log(12..toFixed(2)); // 12.00
    Note : Je n'étais pas au fait de la notation [] pour les méthodes !

    Cordialement,
    Patrick Kolodziejczyk.
  2. Avatar de Bovino
    • |
    • permalink
    D'ailleurs, il y a une erreur dans ton commentaire résultat !
    Les affres du copier/coller.
    Je ne corrige pas, ça me servira de leçon.