Beruflich Dokumente
Kultur Dokumente
noms de fonctions
Une fonction est un bloc de texte plutôt de code et données (aussi appe-
lée « sous-programme ») que le navigateur interprète comme instruc-
tions 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) ou du sein de la fonction même (récursion) ou d’un autre fichier
(fichier externe : bibliothèques / frameworks...).
La valeur retournée par une fonction peut être de n’importe quel type
légal (par défaut undefined), et en particulier une autre fonction
(l’adresse-mémoire de cette dernière) ou d’elle-même (fonctions récur-
sives), une Array (p.ex. « return [v1,v2...] »), un objet (p.ex. return
{x:val}), une propriété d’objet (p.ex. « return obj.attr »), une chaîne
[de caractère] (p.ex. « return "chaîne" », un nombre p.ex. « return
5 »,... ) ces valeurs de retour pouvant être représentée par des variables
ou des constantes (chaînes ou scalaires).
I. Fonctions NOMMÉES :
<script type="text/javascript">
"use strict";
En fait, seule la foo() dans I.1. est une fonction nommée. fob dans I.2. et
foc dans I.3. (fonction fléchée) sont des pointeurs (alias) sur fonction
anonyme, ou alias de la fonction.
a. Object.getOwnPropertyDescriptors(foo)
b. Object.getOwnPropertyDescriptors(fob)
<script type="text/javascript">
"use strict";
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’une chaîne vide.
Object.getOwnPropertyDescriptors ( function(p1,p2) {
alert ( p1 ( p2 ))
})
Object.getOwnPropertyDescriptors( (function(){})() )
YANDEX :
VM187:1 Uncaught TypeError: Cannot convert undefined
or null to object
at Function.getOwnPropertyDescriptors (<anony-
mous>)
FIREFOX :
TypeError: can't convert undefined to object
<script type="text/javascript">
function f_id(){
// corps de la fonction
}
</script>
<script type="text/javascript">
v_f_id = function (){
// corps de la fonction
}
</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));
console.log(date);
console.log(age+" ans.");
</script>
Exécution :
Une fonction est appelée pour effectuer une tâche dont le résultat peut
être retourné par la fonction et doit être stocké dans une variable ou utili-
sé directement dans un calcul ou être directement affiché, envoyé vers le
paramètre d’une autre fonction comme argument... Par défaut (quad il
n’y a pas de directive return ou quand return ne spécifie pas une valeur
de retour) la fonction retourne « undefined ».
Une fonction peut avoir ses propres variables, on les appelle « variables
locales », ces variables locales peuvent avoir une accessibilité (visibilité)
DIASOLUKA Nz. Luyalu -8/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
limitée à son bloc quand elles sont déclarées avec le mot-clé var (va-
riables locales au vrai sens du mot), ou se faire voir ou accéder à partir
de n’importe où (se comportent comme des variables globales).
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.
Toute fonction peut même accéder aux variables non var de n’importe
quelle autre fonction, et ses variables non var peuvent être accédées en
dehors de toute fonction (dans l’espace global).
Une fonction est dite de haut rang (High Order Function) si elle ré-
pond à au moins un de ces critères :
Notez :
II. _=>{} est une fonction fléchée configurée comme une véritable
fonction, c’est-à-dire un « callable object ».
<script type="text/javascript">
var Fruit = function(n,s){
// Variables locale
couleur= "rouge";
poids= 50;
////////
// Appel de la fonction ORDINAIRE
Fruit(null , "ORDINAIRE");
Exécution :
<script type="text/javascript">
var Fruit = function(n,s){
couleur="jaune"
console.log("Couleur = "+couleur)
}
DIASOLUKA Nz. Luyalu -11/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
////////
// Appel de la fonction ORDINAIRE
Fruit();
Exécution :
Couleur = jaune
undefined
undefined
Couleur = jaune
pomme instanceof Fruit = true
pomme instanceof Fruit = true
<script type="text/javascript">
var Fruit = function(n,s){
// Variables locale
couleur= "rouge";
poids= 50;
////////
// Appel de la fonction ORDINAIRE
Fruit(null , "ORDINAIRE");
Exécution :
<script type="text/javascript">
console.log("dieu est dieu".toUpperCase())
</script>
Affiche :
function id_fct(){}
function id_fct(paramètres){}
// Définition de la fonction
function id_fct([paramètres]){}
// Appel à la fonction
id_fct([arguments]);
Exemple :
<script type="text/javascript">
// Définition de la fonction
function id_fct(){
console.log("dieu est transcen-
dant".toUpperCase().split(""))
}
// Appel à la fonction
DIASOLUKA Nz. Luyalu -15/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
id_fct();
</script>
DIEU,EST,TRANSCENDANT
Array(3)
0: "DIEU"
1: "EST"
2: "TRANSCENDANT"
length: 3
__proto__: Array(0)
Avec FIREFOX :
let f1=function(p,q,r,s,t,u){
}
console.log("f1() attend",f1.length,"arguments =\
nombre de paramètres formellement déclarés.");
// f1() attend 6 arguments =
// nombre de paramètres formellement déclarés.
console.log("f1.name=",f1.name); // f1.name= f1
// utilisée dans une instruction de fonction.
f1.displayName="nom_f1";
console.log("f1.name=",f1.name); // f1.name= f1
console.log("f1.displayName=",f1.displayName);
// f1.displayName= nom_f1
var objet = {
uneMéthode1: function() {}, // anonyme
uneMéthode2: function objet_maMéthode() {}
};
console.log(objet.uneMéthode1.name); // uneMéthode1
console.log(objet.uneMéthode2.name); // objet_maMéthode
</script>
console.log("f1() attend",f1.length,"arguments.");
// f1() attend 5 arguments.
console.log("f2() attend",f2.length,"arguments.");
// f2() attend 2 arguments.
f2(1,2);
console.log("f2.arguments=",f2.arguments);
// f2.arguments= null
</script>
Appel d’une
DIASOLUKA Nz. Luyalu -18/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
Sans paramètres par défaut (ou paramètres initialisés) :
<script type="text/javascript">
E = Math.E; // Le mode strict déclaré plus loin
"use strict";
// Activation mode strict, n’affecte pas E.
<script type="text/javascript">
E = Math.E; // mode strict déclaré après
"use strict";
Un paramètre par défaut est celui qui est TOUJOURS pris en considéra-
tion avec la valeur lui définie quand la fonction appelante ne lui a pas
envoyé l’argument correspondant, mais prend éventuellement la valeur
de l’argument lui envoyé par la fonction appelante .
Opera 12 :
[10/02/2018 09:44:14] JavaScript - file://localhost/K:/test.html
Inline script compilation
Syntax error at line 2 while loading: expected ')', got '='
function ard(n,p=2){
-----------------^
console.log(objet.uneMéthode.name); // uneMéthode
try{objet.uneMéthode.name = 'nvnom'}
catch(e) {console.log(e)};
// TypeError: "name" is read-only
objet.uneMéthode.name = 'nvnom';
// TypeError: "name" is read-only
</script>
Exemple :
function resAftdel(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x+' resolved');
}, 5000);
});
}
let ft=ftimeout;
console.log(ft("ftimeout")); // retour de ftimeout()
let fa=asyncCall();
console.log(fa); // Promise { <state>: "pending" }
// OUTPUT
// 13:09:02.310 test.html:24 -> retour de ftimeout()
// 13:09:02.317 test.html:18 -> calling
// 13:09:02.318 test.html:27 -> Promise {<pending>}
// 13:09:07.311 test.html:4 -> ftimeout resolved
// 13:09:07.319 test.html:20 -> asyncCall resolved
</script>
function resAftdel(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x+' resolved');
}, 10000);
});
}
let ft=ftimeout;
console.log(ft("ftimeout")); // retour de ftimeout()
let fa=asyncCall();
console.log(fa); // Promise { <state>: "pending" }
Syntaxe :
Valeur de retour :
/* OUTPUT
00:12:53.250 test.html:11 -> calling
00:12:53.254 test.html:16 -> Promise {[[PromiseSta-
tus]]: "pending", [[PromiseValue]]: undefined}
00:13:03.255 test.html:13 -> asyncCall resolved */
</script>
return x + a + b;
}
// OUTPUT
// 12:48:53.071 test.html:15 -> 10 "number"
// 12:48:53.075 test.html:4 -> Dans resAftdel()
// 12:48:53.076 test.html:26 -> Promise {<pending>}
// 12:48:53.079 test.html:15 -> 10 "number"
DIASOLUKA Nz. Luyalu -29/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
// 12:48:53.080 test.html:4 -> Dans resAftdel()
// 12:48:53.080 test.html:4 -> Dans resAftdel()
// 12:48:53.080 test.html:4 -> Dans resAftdel()
// 12:49:03.076 test.html:17 -> 20 "number"
// 12:49:03.076 test.html:4 -> Dans resAftdel()
// 12:49:03.081 test.html:17 -> 20 "number"
// 12:49:03.081 test.html:4 -> Dans resAftdel()
// 12:49:03.082 test.html:46 -> 60
// 12:49:13.077 test.html:19 -> 30 "number"
// 12:49:13.082 test.html:19 -> 30 "number"
// 12:49:13.082 test.html:32 -> 60
</script>
>Promise
function Promise()
Promise()
length: 1
name: "Promise"
prototype: PromiseProto
catch: function catch()
constructor: Promise()
length: 1
name: "Promise"
prototype: PromiseProto
catch: function catch()
constructor: Promise()
length: 1
name: "Promise"
prototype: PromiseProto { … }
race: function race()
reject: function reject()
resolve: function resolve()
Symbol(Symbol.species): undefined
DIASOLUKA Nz. Luyalu -30/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
__proto__: function ()
then: function then()
Symbol(Symbol.toStringTag): undefined
__proto__: Object { … }
race: function race()
reject: function reject()
resolve: function resolve()
Symbol(Symbol.species): undefined
__proto__: function ()
then: function then()
Symbol(Symbol.toStringTag): undefined
__proto__: Object { … }
race: function race()
reject: function reject()
resolve: function resolve()
Symbol(Symbol.species): undefined
__proto__: function ()
Object.getOwnPropertyNames(Promise)
Array [ "all", "race", "reject", "resolve", "proto-
type", "length", "name" ]
Object.getOwnPropertyDescriptors(Promise)
Object { all: {…}, race: {…}, reject: {…}, resolve: {…},
prototype: {…}, length: {…}, name: {…}, Sym-
bol(Symbol.species): {…} }
{…}
all: Object { writable: true, enumerable: false, config-
urable: true, … }
length: Object { value: 1, writable: false, enumerable:
false, … }
name: Object { value: "Promise", writable: false, enu-
merable: false, … }
prototype: Object { writable: false, enumerable: false,
configurable: false, … }
DIASOLUKA Nz. Luyalu -31/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
race: Object { writable: true, enumerable: false, con-
figurable: true, … }
reject: Object { writable: true, enumerable: false, con-
figurable: true, … }
resolve: Object { writable: true, enumerable: false,
configurable: true, … }
Symbol(Symbol.species): Object { get: get [Sym-
bol.species](), enumerable: false, configurable: true, … }
__proto__: Object { … }
I. Computational Operators
Description Symbol
Unary negation -
Increment ++
Decrement --
Multiplication *
Division /
Modulus arithmetic %
Addition +
Subtraction -
Description Symbol
Logical NOT !
Less than <
Greater than >
Less than or equal to <=
Greater than or equal to >=
DIASOLUKA Nz. Luyalu -32/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
Description Symbol
Equality ==
Inequality !=
Logical AND &&
Logical OR ||
Conditional (ternary) ?:
Comma ,
Strict Equality ===
Strict Inequality !==
Description Symbol
Bitwise NOT ~
Bitwise Left Shift <<
Bitwise Right Shift >>
Unsigned Right Shift >>>
Bitwise AND &
Bitwise XOR ^
Bitwise OR |
Description Symbol
Assignment =
OP= (such as +=
Compound Assignment
and &=)
V. Miscellaneous Operators
Description Symbol
delete Delete
typeof typeof
DIASOLUKA Nz. Luyalu -33/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
Description Symbol
void Void
instanceof instanceof
new New
in In
Ce qui est plus choquant, c’est qu’il n’y a aucun nombre d’Armstrong
(sauf le 0 et le 1) avec l’exposant 2, jusqu’à 1e9 :
function fact(n) {
if (n == 0) return 1;
else return fact(n-1)*n ; }
</script>
let t=setTimeout(function () {
// In non-strict mode, the function defines `this`
// as the global object, which is different from
// the `this` defined by the timeLaps() constructor.
document.getElementById('idiv').innerText=
DIASOLUKA Nz. Luyalu -38/42- JavaScript T.-III
Gestions de paramètres et noms de fonctions
that.gb +" "+ that.delay/1000 + " secs past";
if(that.secs>=10)clearTimeout(t);
}, this.delay);
}
Mots-clés :
JAVASCRIPT, Programmation Internet, fonction de haut rang,
High Order Function, keys, values, parseInt, parseFloat, toString,
récursion, fichier externe, bibliothèques, frameworks, fonction flé-
chée, sloppy mode, mode strict, prototype, objet ordinaire, objet
exotique, objet standard, built-in object, Scope, contexte
d’exécution, Domaine, Portée, Étendue, Visibilité, Accessibilité,
durée de vie, Es10, ECMASCRIPT 2019, LiveScript, extra-
dimensionnels, entités éthériques non-biologiques, TC39, ECMA,
Kaprekar
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-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-