Petite Introduction Aux Fonctions JavaScript

Petite Introduction Aux Fonctions JavaScript

-

Documents
12 pages
Lire
YouScribe est heureux de vous offrir cette publication

Description

ECMASCRIPT définit une fonction comme ceci :
« member of the Object type that may be invoked as a subroutine »
Les fonctions sont des « blocs de code » réutilisables qu’on peut appeler n’importe quand et de n’importe où dans un programme.
Il existe des fonctions nommées qu’on peut appeler de n’importe où, et des fonctions anonymes qu’on peut exécuter (invoquer) juste à la fin de leur définition (expressions de fonctions immédiatement invoquées) ou utiliser comme event Handler ou qu’on peut affecter à une variable (soit la valeur qu’elle retourne, soit son adresse = pointeur).
Le petit script ci-dessous illustre différents types et syntaxes de fonctions.

Sujets

Informations

Publié par
Publié le 26 février 2019
Nombre de visites sur la page 2
Langue Français
Signaler un problème
Petite Introduction Aux Fonctions Java-Script
ECMASCRIPTdéfinit une fonction comme ceci : «member of theObject typethat may be invoked as asub-routine»
Lesfonctionssont des « blocs de code » réutilisables qu on peut appeler n importe quand et de n importe où dans ✥ ✥ un programme.
Il existe desfonctions nomméesqu on peut appeler de n importe où, et desfonctions anonymesqu on peut exé-✥ ✥ cuter (invoquer) juste à la fin de leur définition (expressions de fonctions immédiatement invoquées) ou utiliser commeevent Handlerou qu on peut affecter à une variable (soit la valeur qu elle retourne, soit son adresse = pointeur).
Le petit script ci-dessous illustre différents types et syntaxes de fonctions.
<script type="text/javascript"> "use strict;" // Syntaxe ordinaire d'une fonction
Petite Introduction Aux Fonctions JavaScript function f0(v=1){console.log(Math.tan(v))}; f0(); // 1.5574077246549023
/******************************/
let f1=(function(){return Math.tan(1)})(); // // f1 reçoit ici la VALEUR DE RETOUR de la // fonction anonyme, car cette fonction anonyme // est immédiatement exécutée (invoquée) à ause des // parenthèses qui termient sa définition/déclaration. // Mais ici les parenthèses entourant la // définition/déclaration de la fonction anonyme // ne sont pas indispensables car affectation.
console.log(f1); // 1.5574077246549023
// console.log(f1()); // // TypeError: f1 is not a function
// f1(); // TypeError:
f1 is not a function
/******************************/
let f2=function(){return Math.tan(v)}(v=1); // // f2 reçoit ici la valeur de retour de // la fonction anonyme.
console.log(f2); // 1.5574077246549023
/******************************/
mardi 31 juillet 2018
- 2/12 -
23:12:45 [PM]
Petite Introduction Aux Fonctions JavaScript
let f3=function(v=1){return Math.tan(v)}; console.log(f3()); // 1.5574077246549023
let f4=function(v=123){console.log(Math.tan(v))}; f4(Math.log(Math.E)); // 1.5574077246549023
/*****************************/
// function(){console.log(Math.tan(1)}(); // // Ici les parenthèses autour de la fonction // sont obligatoires. // SyntaxError: function statement requires a name
// Mais on peut immédiatement invoquer la fonction // anonyme en la faisant précéder d'un opérateur, // ou bien entendu, l'entourer de parenthèses.
+function(){console.log(Math.tan(1))}(); // 1.5574077246549023
!function(){console.log(Math.tan(1))}(); // 1.5574077246549023
-function(){console.log(Math.tan(1))}(); // 1.5574077246549023
~function(){console.log(Math.tan(1))}(); // 1.5574077246549023
`${function(){console.log(Math.tan(1))}()}`; // 1.5574077246549023
mardi 31 juillet 2018
- 3/12 -
23:12:45 [PM]
Petite Introduction Aux Fonctions JavaScript +(_=>console.log(Math.tan(1)))(); // 1.5574077246549023
~((v=1)=>console.log(Math.tan(v)))(); // 1.5574077246549023
(function(){console.log(Math.tan(1))}()); // 1.5574077246549023 // // Ici les parenthèses autour de la fonction // sont obligatoires. // SyntaxError: function statement requires a name
(function(){console.log(Math.tan(1))})(); // 1.5574077246549023 // // Ici les parenthèses autour de la fonction // sont obligatoires. // SyntaxError: function statement requires a name
/*****************************/
let f5=function(){console.log(Math.tan(1))}; // // Ici, il s'agit aussi d'une fonction anonyme // On ne peut pas l'appeler par son nom. // Mais la vaviable f3 reçoit (pointe) L'ADRESSE // de la fonction anonyme qui n'est pas // immédiatement invoquée. // On peut donc appeler la fonction anonyme // indirectement via son adresse stockée dans // la variable f3
f5(); // 1.5574077246549023
let f6=_=>console.log(Math.tan(1));
mardi 31 juillet 2018
- 4/12 -
23:12:45 [PM]
f6()
Petite Introduction Aux Fonctions JavaScript
/*****************************/
// LE PARAMÈTRE DU RESTE
let f7=function(p1,p2,...p3){ console.log(p1,p2,p3);
}
f7("dias",2018,"puis,",["paramètre","du"],{p:"reste"}) // dias 2018 Array [ "puis,", [ ], { } ] � � // dias 2018 [ ] // 0: "puis," // 1: Array [ "paramètre", "du" ] // 2: Object { p: "reste" } // length: 3 // __proto__: Array []
/*****************************/
function ext(rayon){ let vLocExt=Math.PI; vLocExt*=10; const c=rayon const ds="Dans ext, "
}
// fonction fermeture (closure) const fClosure=function(intro){ return ds+intro+" "+vLocExt*Math.pow(c,2) }
return ["avec",fClosure]
mardi 31 juillet 2018
- 5/12 -
23:12:45 [PM]
// CURRYING
Petite Introduction Aux Fonctions JavaScript
const cv=ext(3);
let cr cr=cv[1](cv[0]) console.log("Surf=",cr) // Surf= Dans ext, avec 282.7433388230814
console.log(Math.PI*10*3*3) // 282.74333882308133 </script>
Rappel:le caractère ` est le code ASCII 096, obtensible avec <ALT-096>.
mardi 31 juillet 2018
- 6/12 -
23:12:45 [PM]
Petite Introduction Aux Fonctions JavaScript
Redéfinition de fonction:
En JavaScript aussi bien en mode standard qu'en mode strict, une fonction peut être redéfinie, pouvant engendrer de graves erreurs de temps d'exécution (omis-sions d'exécution) pouvant passer inaperçues, avec les contraintes suivantes:
1.Une DÉFINITION defonctionetAPPELdefonction.
<script language="JavaScript"> "use strict"; function factor(n){ if(n==1)return 1 else return n*factor(n-1) }
console.log(factor(10)) // 3628800 </script>
2. On pourrait croire que la dernière fonction redéfinie devrait prendre effet à l'endroit de la redéfinition jusqu'à la fin de l'exécution du programme ou une nouvelle redéfinition, écrasant ou se substituant à toute définition antérieure. Mais méfiez-vous parfois des apparences !
<script language="JavaScript"> "use strict"; function factor(n){ console.dir("Ceci ne calcule pas la factorielle") }
function factor(n){ if(n==1)return 1 else return n*factor(n-1) }
mardi 31 juillet 2018
- 7/12 -
23:12:45 [PM]
Petite Introduction Aux Fonctions JavaScript
console.dir(factor(20)) // 2432902008176640000 </script>
3. Une définition de fonction reste active tant qu'une autre fonction portant le même nom n'a pas encore été redéfinie dans le code source DANS UN AUTRE BLOC DE SCRIPT.
<script language="JavaScript"> "use strict"; function factor(n){ console.dir("Ceci ne calcule pas la factorielle") }
factor(6) // Ceci ne calcule pas la factorielle </script>
<script> console.log("REDÉFINITION DANS UN AUTRE BLOC DE SCRIPT") </script>
<script language="JavaScript"> "use strict"; function factor(n){ if(n==1)return 1 else return n*factor(n-1) }
console.dir(factor(21)) // 51090942171709440000 </script>
Exécution:
Ceci ne calcule pas la factorielle mardi 31 juillet 2018- 8/12 -
test.html:3:1 23:12:45 [PM]
Petite Introduction Aux Fonctions JavaScript REDÉFINITION DANS UN AUTRE BLOC DE SCRIPT test.html:11:1 51090942171709440000 test.html:20:1
4. Si la redéfinition de fonction se fait dans UN MÊME BLOC DE SCRIPT c'est la dernière définition de la fonction ayant le même nom qui sera active (qui exé-cutera) et avant cette dernière redéfinition la première définition ne sera même pas appelée.
<script language="JavaScript"> "use strict"; function factor(n){ console.dir("Ceci ne calcule pas la factorielle") }
factor(6) // N'appelle même pas ! // Notez aussi que toutes les [re]définitions sont // dans un même élément SCRIPT.
console.log("REDÉFINITION DANS UN AUTRE BLOC DE SCRIPT")
function factor(n){ if(n==1)return 1 else return n*factor(n-1) }
console.dir(factor(170)) // 7.257415615307994e+306 </script>
Exécution:
REDÉFINITION DANS UN AUTRE BLOC DE SCRIPT 7.257415615307994e+306
mardi 31 juillet 2018
- 9/12 -
test.html:10:1 test.html:17:1
23:12:45 [PM]
Petite Introduction Aux Fonctions JavaScript 5. Remarquez ci-dessous que sans la redéfinition, la première définition est bel et bien appelée.
<script language="JavaScript"> "use strict"; function factor(n){ console.dir("Ceci ne calcule pas la factorielle") }
factor(150) // Ceci ne calcule pas la factorielle
test.html:3:3
console.log("REDÉFINITION DANS UN MÊME BLOC DE SCRIPT") // REDÉFINITION DANS UN MÊME BLOC DE SCRIPT test.html:10:1
/* function factor(n){ if(n==1)return 1 else return n*factor(n-1) } */
console.dir(factor(100)) // Ceci ne calcule pas la factorielle // undefined </script>
Exécution:
Ceci ne calcule pas la factorielle REDÉFINITION DANS UN MÊME BLOC DE SCRIPT Ceci ne calcule pas la factorielle undefined
mardi 31 juillet 2018
- 10/12 -
test.html:3:3 test.html:20:1
test.html:3:3 test.html:10:1 test.html:3:3 test.html:20:1
23:12:45 [PM]
Petite Introduction Aux Fonctions JavaScript
Mots-clés: fonctions,curry,currying,redéfinition,fonction fermeture,closure,paramètre du reste,blocs de code,réutilisables,fonctions nommées,fonctions anony-mes,expressions de fonctions immédiatement invoquées,eventHand-ler,affecter,variable,pointeur,script,types de fonction,syntaxes de fonction.
Mercredi, 11. avril 2018 (23:34 [pm]). Dernière mise à jour : 31 juillet 2018 (23:02 [pm]).
DIASOLUKA Nz. Luyalu Docteur en Médecine, Chirurgie & Accouchements (1977), CNOM : 0866 - Spécialiste en ophtalmologie (1980) Informaticien-amateur, Programmeur et WebMaster.
Chercheur indépendant, autonome et autofinancé, bénévole,
sans aucun conflit ou lien d intérêt ou contrainte promotionnelle avec
qui qu il soit ou quelqu organisme ou institution / organisation ✁ ✁
que ce soit, étatique, paraétatique ou privé, industriel ou commercial en relation avec le sujet présenté.
+243 - 851278216 - 899508675 - 995624714 - 902263541 - 813572818
diasfb@mail2world.com
Autre Lecture : https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-de-La-Creation
D autres publications pouvant aussi intéresser :
https://www.scribd.com/document/377036251/Le-Dosage-Des-Medicaments-en-Cac-Cas https://www.scribd.com/document/377035454/Le-Hasard-Des-Thermometres-Non-contact-a-Infrarouge mardi 31 juillet 2018- 11/12 -23:12:45 [PM]