Gestion de paramètres et noms de fonctions
46 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
46 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Une fonction requiert deux conditions :
1. Elle doit être déclarée/définie. En JS
a. La déclaration d’une fonction (ou instruction de fonction) : lui donner un nom-identificateur et une adresse-mémoire
b. et Sa définition : la description de sa structure et de son fonc-tionnement interne (y compris ses paramètres, son unique valeur de retour, ses variables locales, les traitements effectués...) logée à l’adresse-mémoire lui affectée.
2. Elle doit par la suite être explicitement appelée. Une fonction ne peut pas s’exécuter toute seule à moins qu’elle soit inline..
a. Même quand elle est récursive, la fonction doit s’appeler du sein d’elle-même
b. Même quand elle est inline, elle est en fait explicitement appelée à la fin de sa déclaration/définition, par les parenthèses terminales.
Des fonctions peuvent être prédéfinies dans le navigateur ou le compila-teur (natives), un fichier d’entête (bibliothèque), un API (Applications Programmers Inteface), un objet (méthodes)...

Informations

Publié par
Publié le 24 mars 2019
Nombre de lectures 0
Langue Français

Extrait

G e s t i o n s d e p a r a m è t r e s e t n o m s d e f o n c t i o n s
J AVA S C R I P T(Programmation Internet)V O L . I I I P o u r D é b u t a n t s
J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga +243 - 851278216 - 899508675 - 995624714 - 902263541 -813572818 La dernière révision de ce texte est disponible sur CD.
CHAPITRE 10 :Les FONCTIONS dans JavaScript
Unefonctionun bloc de texte plutôt de code et est données (aussi appelée «sous-programme») que le navigateur interprète comme instructions pour exécuter une tâche précise, et que l’on peut appeler autant de fois au besoin à partir de n’importe où : de l’extérieur de la fonction (call) oudu sein de la fonction même (récursion) ou d’un autre îchier (îchier externe : bibliothèques / frameworks...).
Unefonctionrequiert deux conditions :
1. Elle doit êtredéclarée/déînie. En JS a. Ladéclaration d’une fonction (ouinstruction de fonction) : lui donner unnom-identiIcateur et uneadresse-mémoireb. et Sadéînition: la description de sastructureet de sonfonctionnement interne (y compris ses paramètres, son uniquevaleur de retour, ses variables locales, lestraitementseFectués...) logée à l’adresse-mémoire lui aFectée.
Gestions de paramètres et noms de fonctions 2. Elle doit par la suite être explicitementappelée. Une fonction ne peut pas s’exécuter toute seule à moins qu’elle soitinline.. a. Même quand elle estrécursive, la fonction doit s’appeler du sein d’elle-même b. Même quand elle estinline, elle est en fait explicitement appelée à la în de sa déclaration/déînition, par les parenthèses terminales.
Des fonctions peuvent être prédéînies dans le navigateur ou le compilateur (natives), un îchier d’entête (bibliothèque), un API (Applications Programmers Inteface), un objet (méthodes)...
On peut plus facilement comprendre unappel à une fonction comme étant uneinstruction unique exécutant une série d’autresfonctions etinstructions prédéterminées et regroupées dans le corps de la fonction appelée lors de la déînition de cette dernière.
Ladéînition d’une fonctionest reconnaissable par une paire de parenthèses (vide ou non), suivie d’une paire d’accolades (curly brackets, vide ou non). Le contenu de la paire de parenthèse représente lesparamètres formels, et le contenu du bloc des accolades est le code ou corps de la fonction. Le corps de la fonction peut aussi être vide.
Unefonctionhabituellement à eFectuer une sert tâche répétitive, et retourne (renvoie) obligatoirement une valeur, implicitement via l’instructionreturn, habituellement le résultat de la tâche eFectuée par la fonction. Par exemple la fonctionsin(x)retourne lesinus de la valeur représentée par l’argumentx, la fonction DIASOLUKA Nz.Luyalu -2/46-JavaScript T.-III
Gestions de paramètres et noms de fonctions factorielle(x) retourne la factorielle du nombre en argument.
La valeur retournée par une fonction peut être de n’importe quel type légal (par défautundeîned), et en particulier une autrefonction (l’adresse-mémoire de cette dernière) ou d’elle-même (fonctions récursives), une Array« (p.ex. return [v1,v2...]»), unobjet (p.ex. return {x:val}), unepropriété d’objet(p.ex. «return obj.attr»), une chaïne [de caractère] (p.ex. «return "chaîne"», unnombre p.ex. «return 5»,... ) ces valeurs de retour pouvant être représentée par des variables ou des constantes (chaïnes ou scalaires).
Syntaxe générique de déclaration/déînition d’une fonction :
function nom_fonction ( arguments0, arguments1, ... argumentsN ) {  /* Corps de la fonction = série d’instructions et  de variables internes = locales */ }
Il y a deux façons de déclarer une fonction en JS : Comme fonctionsnomméeun (ayant nom identiIantcomme ou fonctionanonyme.
I. Fonctions NOMMÉES :
<script type="text/javascript"> "use strict";
DIASOLUKA Nz.Luyalu -3/46-JavaScript T.-III
Gestions de paramètres et noms de fonctions /* I.1. */ function foo(p){ p() }; // Classique.
/* I.2. */ var fob = function(){}; // AFectée. /* I.3. */ var foc = () => {}; // léchée. </script>
En fait, seule lafoo()dans I.1. est une fonction nommée. fob dans I.2. etfocI.3. (fonction échée) sont des dans pointeurssur fonction anonyme, ou (alias) alias de la fonction.
Voici l’architecture interne de ces fonctions, particulièrement la valeur de leurpropriété« nom »:.
De fonction anonyme ou pas, les pointeurs sur fonction représentent la fonction-même (répondent à la place de la fonction).
a. Object.getOwnPropertyDescriptors(foo)
1 {length: {…},name: {…},arguments: {…},caller: {…},pr ototype: {…}} Aarguments:{value:null,writable:false,enumerable:false, conîgurable:false} Bcaller:{value:null,writable:false,enumerable:false,con îgurable:false} Clength:{value:1,writable:false,enumerable:false,conîg urable:true} Dname:{value:"foo",writable:false,enumerable:false,co nîgurable:true} Eprototype:{value: {…},writable:true,enumerable:false, conîgurable:false} __proto__:Object
DIASOLUKA Nz.Luyalu -4/46-JavaScript T.-III
Gestions de paramètres et noms de fonctions b. Object.getOwnPropertyDescriptors(fob)
1
A
B
C
D
E
{length: {…},name: {…},arguments: {…},caller: {…},pr ototype: {…}} arguments:{value:null,writable:false,enumerable:false, conîgurable:false} caller:{value:null,writable:false,enumerable:false,con îgurable:false} length:{value:0,writable:false,enumerable:false,conîg urable:true} name:{value:"fob",writable:false,enumerable:false,co nîgurable:true} prototype:{value: {…},writable:true,enumerable:false, conîgurable:false} __proto__:Object
c. Object.getOwnPropertyDescriptors(foc)
1 A
B
C
{length: {…},name: {…}} length:{value:0,writable:false,enumerable:false,conîg urable:true} name:{value:"foc",writable:false,enumerable:false,co nîgurable:true} __proto__:Object
II. Fonctions ANONYMES :
<script type="text/javascript">  "use strict";
/* II.1. */ (function(){})(); // Inline. /* II.2. */ !function(){}(); // Exécution immédiate.
/* II.3. */ function fob(){ // CT NOMMÉE DIASOLUKA Nz.Luyalu -5/46-JavaScript T.-III
Gestions de paramètres et noms de fonctions  foo( // fob() appelle foo() (son arg= fct anonyme).  function(){console.log(Math.E)} // CT ANONYME  )  } fob(); // Appel de fob() juste ci-dessus. </script>
Une fonction anonyme est naturellement une fonction sans nom. Voici la structure d’une fonction anonyme comme telle, sa propriéténame n’est qu’unechaîne vide.
Object.getOwnPropertyDescriptors ( function(p1,p2) { alert ( p1 ( p2 )) })
1 {length: {…},name: {…},arguments: {…},caller: {…},pr ototype: {…}} Aarguments:{value:null,writable:false,enumerable:false, conîgurable:false} Bcaller:{value:null,writable:false,enumerable:false,con îgurable:false} Clength:{value:2,writable:false,enumerable:false,conîg urable:true} Dname:{value:"",writable:false,enumerable:false,conîg urable:true} Eprototype:{value: {…},writable:true,enumerable:false, conîgurable:false} __proto__:Object
Les fonctions échées sont TOUJOURS anonymes : (pouvant pourtant être «expression de fonction»).
Object.getOwnPropertyDescriptors(()=>{})
DIASOLUKA Nz.Luyalu -6/46-JavaScript T.-III
Gestions de paramètres et noms de fonctions 1 {length: {…},name: {…}} Alength:{value:0,writable:false,enumerable:false,conîg urable:true} Bname:{value:"",writable:false,enumerable:false,conîg urable:true} C__proto__:Object
Autres fonctions anonymes :
Object.getOwnPropertyDescriptors( (function(){})() )
YANDEX : VM187:1 Uncaught TypeError: Cannot convert undeîned or null to object  at unction.getOwnPropertyDescriptors (<anonymous>)  at <anonymous>:1:8
FIREFOX : TypeError: can't convert undeîned to object
Lasyntaxe de déînition d’une fonction est comme suit :
Le mot clé «function», lenom (identiîant de votre goût)la fonction (sauf quand il s’agit de fonction de anonyme) suivi d’unepaire de parenthèses (pouvant contenir une liste deparamètres formelsséparés par des virgules), suivie directement (éventuellement avec des espaces) d’une paire d’accolades (le corps de la fonction) entre lesquelles se trouve le contenu (instructions et données) de la fonction.
<script type="text/javascript">
DIASOLUKA Nz.Luyalu -7/46-JavaScript T.-III
Gestions de paramètres et noms de fonctions function f_id(){  // corps de la fonction } </script>
ou alternativement le nom (identiîant) de la fonction peut précéder, plutôt on aFecte l'adresse de la fonction (pointeur) à une variable ou autant de variables que l’on veut. Ces variables ne sont en fait pas des identiîants de fonction, mais des «pointeurs sur fonctions anonymes»; en d’autres termes «alias de fonction».
<script type="text/javascript"> v_f_id = function (){  // corps de la fonction } </script>
On appelle la fonction par son identiîant et éventuellement avec des arguments entre parenthèses, comme ceci :
<script type="text/javascript"> function f_date(d,m,y){  return new Date(y,m-1,d) } </script>
<script type="text/javascript"> f_age = function (a){  return (new Date()-a)/(1000*3600*24*365.2475); }
date=f_date(27,7,2005); age=f_age(new Date(2005,7,27));
DIASOLUKA Nz.Luyalu -8/46-JavaScript T.-III
Gestions de paramètres et noms de fonctions
console.log(date); console.log(age+" ans."); </script>
Exécution :
Wed Jul 27 2005 00:00:00 GMT+0100 (Paris, Madrid) this.html:17 12.352855437858855 ans. this.html:18
Déf. : Unargument d’une fonction est unparamètre passé à la fonction appelée par une instruction appelante, et qui est réceptionnée dans la fonction appelée par le paramètre formelse trouve à la même position qui (même numéro d’ordre) que dans la liste d’arguments..
Une fonction est appelée pour eFectuer une tâche dont le résultat peut être retourné par la fonction et doit être stocké dans une variable ou utilisé directement dans un calcul ou être directement aché, envoyé vers le paramètred’une autre fonction commeargument... Par défaut (quad il n’y a pas de directivereturnquand ou return ne spéciîe pas une valeur de retour) la fonction retourne «undeîned».
Une fonction peut avoir ses propres variables, on les appelle «variables locales», ces variables locales peuvent avoir une accessibilité (visibilité) limitée à son bloc quand elles sont déclarées avec le mot-clévar (variables localesau vrai sens du mot), ou se faire voir ou accéder à partir de n’importe où (se comportent comme desvariables globales).
DIASOLUKA Nz.Luyalu -9/46-JavaScript T.-III
Gestions de paramètres et noms de fonctions Une fonction peut être imbriquée dans une autre (et ainsi de suite), leurs variables locales à visibilité globales peuvent être accédées l’une par l’autre et vice-versa.
(Attention : les déclarateurs «let» et «const» ne permettent l’accès que du sein du bloc dans lequel la variable a été déclarée et les blocs imbriqués, mais pas aux blocs englobants. Le déclarateur «var» interdit la visibilité de la variable à partir de l’espace global. Mais tout cela dépend aussi si on travaille en mode «slope» ou en mode «use strict»).
Toute fonction peut même accéder aux variablesnon var de n’importe quelle autre fonction, et ses variablesnon varêtre accédées en dehors de toute fonction peuvent (dans l’espace global).
En JS «fonction» et «objet» ne sont qu’une et même chose. Unobjet-propriété (membre) est créé chaque fois qu’on déînit une fonction dite « ordinaire », exactement de la même façon que quand on crée un objet. Les fonctions sont ainsi dites «objets de première classe» car elles peuvent être manipulées, échangées comme tout autre objet : avoir despropriétés etméthodes, assignées à des variables ou éléments d’arrays ou membres (propriétés) d’autres objets ou même d’autres objets, passer en arguments à d’autres fonctions, ou être la valeur de retour d’une autre fonction, comme tout autre « objet JS ». Une fonction JS ordinaire soit-elle est donc ni plus ni moins un[e instance d’]objet un « callable object » (objets fonction). Les fonctions sont aussi surnommées «Irst class citizen».
Une fonction est ditede haut rang (High Order Function)si elle répond à au moins un de ces critères : DIASOLUKA Nz.Luyalu -10/46-JavaScript T.-III
Gestions de paramètres et noms de fonctions
1. Peut être créée au temps d’exécution (runtime) 2. Peut être aFectée (assignée) à une variable : i. La fonction inline immédiatement invoquée (function(){})() n’est pas une fonction de haut rang.
1. Peut être passée en argument à une autre fonction 2. Peut être retournée comme résultat à une fonction
Exemples de fonctions de haut rang : map, reduce, îlter...
Notez :
I. (function(){}()) est une « fonction »inline « à invocation immédiate ». C’est une simple succession de texte-code exécutée pendant le parsing du code source, puis il est rejeté, oublié. Ce n’est pas un objet comme tel.
II. _=>{} est une fonctionLéchéecomme conîgurée une véritable fonction, c’est-à-dire un« callable object ».
<script type="text/javascript"> "use strict";  console.log((function(){}()) instanceof Object)  // false
 console.log((_=>{}) instanceof Object)  // true </script>
Exemple d’une fonction «pure» utilisée comme objet : DIASOLUKA Nz.Luyalu -11/46-JavaScript T.-III
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents