Académique Documents
Professionnel Documents
Culture Documents
Fonctions JavaScript
ECMASCRIPT définit une fonction comme ceci :
« member of the Object type that may be invoked as a subroutine »
/******************************/
console.log(f1); // 1.5574077246549023
// console.log(f1());
//
// TypeError: f1 is not a function
// f1();
// TypeError: f1 is not a function
/******************************/
console.log(f1); // 1.5574077246549023
// console.log(f1());
//
// TypeError: f1 is not a function
// f1();
// TypeError: f1 is not a function
console.log(f1); // 1.5574077246549023
// console.log(f1());
//
// TypeError: f1 is not a function
// f1();
// TypeError: f1 is not a function
/******************************/
console.log(f1); // 1.5574077246549023
// console.log(f1());
//
// TypeError: f1 is not a function
// f1();
// TypeError: f1 is not a function
/******************************/
console.log(f2); // 1.5574077246549023
/******************************/
/*****************************/
// function(){console.log(Math.tan(1)}();
//
// Ici les parenthèses autour de la fonction
// sont obligatoires.
// SyntaxError: function statement requires a name
+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
+(_=>console.log(Math.tan(1)))();
// 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));
f6()
/*****************************/
// 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
return ["avec",fClosure]
}
// CURRYING
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>
qcq("Inappelable");
// Avec FIREFOX :
// ReferenceError: qcq is not defined test.html:7:3
//
// Avec YANDEX :
// test.html:7 Uncaught ReferenceError:
// qcq is not defined at test.html:7
</script>
La grande utilité des fonctions « void » c’est dans la gestion des événements, par
exemple quand on veut désactiver l’action par défaut du clic d’un lien hypertexte.
On remplace la cible du lien par une « fonction void » avec obligatoirement une
valeur « 0 » (zéro) comme argument, et on redéfinit une nouvelle action pour le
clic ou éventuellement on peut définir de nouveaux « EventListners / EventHan-
dlers ». Mais dans notre exemple-ci, le « double-click » est incompatible avec le
click, chaque « DOUBLE-CLICK » est accompagné d’un double click (deux clicks).
<body> console.log(
<a href="javascript:void(0);" "Nouveau « clickHandler »");
id="aid";
ondblclick="alert('OK!')" document.getElementById('aid').
> addEventListener('click', fChange,
Double Cliquez ici. false);
</a> </script>
</body>
<script>
const fChange = _ =>
Voici les propriétés et méthodes des EventsXxxxx , plus facile à obtenir dans la
console de FIREFOX que celle de YANDEX :
Avec FIREFOX :
Window
<default properties>
<prototype>: WindowPrototype
constructor: ()
length: 0
name: "Window"
prototype: WindowPrototype { … }
Symbol(Symbol.hasInstance): function Symbol.hasInstance()
<prototype>: ()
<prototype>: WindowProperties { }
<prototype>: EventTargetPrototype
addEventListener: function addEventListener()
constructor: function ()
dispatchEvent: function dispatchEvent()
removeEventListener: function removeEventListener()
<prototype>: Object { … }
Avec YANDEX :
window
Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}
1. __proto__: Window
1. PERSISTENT: 1
2. TEMPORARY: 0
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:
console.log(factor(10))
// 3628800
</script>
function factor(n){
if(n==1)return 1
else return n*factor(n-1)
}
mardi 31 juillet 2018 - 10/17 - 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.
factor(6)
// Ceci ne calcule pas la factorielle
</script>
<script>
console.log("REDÉFINITION DANS UN AUTRE BLOC DE SCRIPT")
</script>
console.dir(factor(21))
// 51090942171709440000
</script>
Exécution :
function factor(n){
if(n==1)return 1
else return n*factor(n-1)
}
console.dir(factor(170))
// 7.257415615307994e+306
</script>
Exécution :
factor(150)
// Ceci ne calcule pas la factorielle test.html:3:3
/*
function factor(n){
if(n==1)return 1
else return n*factor(n-1)
}
*/
console.dir(factor(100))
// Ceci ne calcule pas la factorielle test.html:3:3
// undefined test.html:20:1
</script>
Exécution :
Ce sont des fonctions ordinaires qui sont rappelées / invoquées en principe auto-
matiquement, pour chaque élément d’une collection itérable, avec certaines mé-
thodes et souvent avec un paramètre factice.
Mais par extension toute fonction passée en argument à une autre fonction et
étant la dernière instruction dans le corps de cette fonction appelée est aussi une
fonction CALLBACK.
Mots-clés :
fonctions,curry,currying,redéfinition,fonction fermeture,closure,paramètre du
reste,blocs de code,réutilisables,fonctions nommées,fonctions ano-
nymes,expressions de fonctions immédiatement invo-
quées,eventHandler,affecter,variable,pointeur,script,types de fonction,syntaxes de
fonction.
diasfb@mail2world.com
Autre Lecture :
https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-de-
La-Creation
• https://www.scribd.com/document/377036251/Le-Dosage-Des-Medicaments-
mardi 31 juillet 2018 - 16/17 - 23:12:45 [PM]
Petite Introduction Aux Fonctions JavaScript
en-Cac-Cas
• https://www.scribd.com/document/377035454/Le-Hasard-Des-Thermometres-
Non-contact-a-Infrarouge
• https://www.scribd.com/document/376222482/Petite-Introduction-Aux-
Fonctions-JavaScript
• https://www.scribd.com/document/376221919/La-Foi-en-Jesus-Christ-Pour-
Quoi-Faire
• https://www.scribd.com/document/375689778/Lacuite-visuelle-angulaire
• https://www.scribd.com/document/375349851/La-variable-This
• https://www.scribd.com/document/375024162/Fonctions-Imbriquees-en-JS
• https://www.scribd.com/document/374789297/Format-Interne-Des-Objets-
JavaScript
• https://www.scribd.com/document/374788758/Iterations-en-JavaScript
• https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-de-La-
Creation
• https://www.scribd.com/document/374597969/Nouvelle-Formule-d-IMC-
indice-de-doduite-Selon-Dr-Diasoluka
• https://www.scribd.com/document/373847209/Property-Descriptors
• https://www.scribd.com/document/373833282/l-Objet-Global-Window
• https://www.scribd.com/document/372665249/Javascript-Tome-II
• https://www.scribd.com/document/355291488/motilite-oculaire-2
• https://www.scribd.com/document/355291239/motilite-oculaire-I
• https://www.scribd.com/document/355290248/Script-d-Analyses-Des-
Reflexes-Pupillomoteurs
• https://www.scribd.com/document/321168468/Renseignements-Id-et-
Anthropometriques
• https://www.scribd.com/document/320856721/Emission-31-Jul-2016
• https://www.scribd.com/document/318182982/Complication-Visuelle-du-
Traitement-de-La-Malaria
• https://www.scribd.com/document/318180637/Rapport-Entre-Oxymetrie-Et-
Type-Respiration
• https://www.scribd.com/document/315746265/Classification-Des-
Medicaments
• https://www.scribd.com/document/315745909/Incongruences-Heresies-et-
Heterodoxies-de-la-Notion-de-Laboratoire
• https://www.scribd.com/document/315745725/Rapport-Entre-Oxymetrie-Et-
Type-Respiration