[JS] Surcharge de parametres JavaScript
C’est en lisant le code source JS d’Atlas que j’ai decouvert la surcharge de parametres Javascript. Ok cela vous parrez peut être idiot mais comme dirait un certain B.Watterson : L’idiotie est l’essence des hommes et je n’ai d’honte à apprendre 🙂
Alors voila, je lisais le code et un moment donné je vois une fonction du type :
1 2 3 | function test(arg1, arg2) { // Code..... } |
Qui était appellé par une ligne de type :
1 | test("ceci", "est", "un", "test"); |
A ce moment j’ai senti mes petits neuronnes s’exciter dans tous les sens avec la question : Je ne comprends pas, ma fonction attend deux arguments et moi je lui en passe quatre.. Qu’est ce qu’il se passe ? 🙂
Dans le code de la fonction j’ai vu à plusieurs reprises le mot arguments. En fouillant un peu plus, impossible de trouver la déclaration de cette variable. Serait-ce une variable propre à JS ???
J’ai donc créé une page html entierement vide pour faire un alert() dans une fonction de cette fameuse variable arguments. Suspense jusqu’a l’execution de la page : vais-je tomber sur un undefined ?? => Et ben non, une belle alerte avec inscrit [object Object] et mes petits neuronnes reprirent une activité normale 🙂
En effet, tous les parametres passés à une fonction javascript sont contenu dans un tableau (Array) nommé arguments.
Exemple simple :
1 2 3 4 5 6 7 8 9 10 | function test() { var output = ""; for(var a=0;a<arguments.length;a++) { output += arguments[a] + " "; } alert(output); } test("1er argument (normal non ?)", "et un 2eme.... etonnant", "allez, un dernier pour la route :)"); |
Vous affichera un beau message :
1 | 1er argument (normal non ?) et un 2eme.... etonnant allez, un dernier pour la route :) |
Et pourtant ma fonction ne prend aucun parametre explicitement 🙂 Genial non ?
paul
Salut SÉBASTIEN,
Juste pour te remercier pour cette information absolument géniale. Encore un grand merci pour l’avoir partager clairement et simplement. Elle valait bien un post !!!