Fonctions Imbriquees en JS
Fonctions Imbriquees en JS
Fonctions Imbriquees en JS
(nested function)
CHAPITRE 12 : L e s f o n c t i o n s i m b r i q u é e s e n j a v a s c r i p t
console.log(
retval[0] + "^" + exp + " = " + retval[1]
);
</script>
Exécution:
console.log(
retval[0] + "^" + exp + " = " + retval[1]
);
///////////////////////////////////////////////
// Tentative de Modification d'une fonction //
// imbriquée en dehors de la fonction //
// qui l'englobe. //
///////////////////////////////////////////////
retval.prototype = fprot;
retval.prototype();
console.dir(rtvf);
console.dir(retval);
// Array [ 2, 16 ] test.html:86:3
// (2) […]
// 0: 2
// 1: 16
// length: 2
// prototype: function fprot()
// <prototype>: Array []
</script>
http://www.acm.org/classics/oct95/
quitLab:
for(let km=0,kml=m2.length ; km<kml ; km++){
forthLab:
for(let ke=0,kel=e2.length ; ke<kel ; ke++){
tmp+= ++cpt +" ";
if(!(m2.includes(e2[ke]))) {
faux++; m2.push(e2[ke]);
break quitLab;
// Quitter la boucle qui suit quitLab.
}
else continue forthLab;
}
}
if(faux) console.log(m2," .not.included ",e2)
else console.log(m2," included ",e2)
console.log("Durée = ",((new Date())-d2)/1000+" secs")
console.log(tmp+" passes.")
</script>
Exécution :
07:25:23,837
Array(11) [ 7, 3, 15, 20, 1, 5, 9, 15, 6, 35, 27 ]
Array(8) [ 1, 25, 3, 5, 7, 9, 15, 75 ]
test.html:10:3
07:25:23,843
Array(12) [ 7, 3, 15, 20, 1, 5, 9, 15, 6, 35, 27, 25 ]
.not.included
Array(8) [ 1, 25, 3, 5, 7, 9, 15, 75 ]
test.html:29:12
07:25:23,848
Array(11) [ 7, 3, 15, 20, 1, 5, 9, 15, 6, 35, 27 ]
Array(8) [ 1, 25, 3, 5, 7, 9, 15, 75 ]
test.html:49:3
07:25:23,849
Array(12) [ 7, 3, 15, 20, 1, 5, 9, 15, 6, 35, 27, 25 ]
.not.included
Exécution :
test.html:10
(11) [7, 3, 15, 20, 1, 5, 9, 15, 6, 35, 27]
(8) [1, 25, 3, 85, 7, 9, 15, 75]
test.html:29
(14) [7, 3, 15, 20, 1, 5, 9, 15, 6, 35, 27, 25, 85, 75]
" .not.included "
(8) [1, 25, 3, 85, 7, 9, 15, 75]
test.html:32
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 passes.
test.html:65
(14) [7, 3, 15, 20, 1, 5, 9, 15, 6, 35, 27, 25, 85, 75]
" .not.included "
(8) [1, 25, 3, 85, 7, 9, 15, 75]
test.html:68
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 passes.
break quitLab2;
// Yandex
// Uncaught SyntaxError: Undefined label 'quitLab2'
//
// FireFox
// SyntaxError: label not found
}
else continue;
}
}
quitLab2:
console.log("Suite")
}
fLabel();
</script>
Exécution :
06:31:40,315
Array(11) [ 7, 3, 15, 20, 1, 5, 9, 15, 6, 35, … ]
Array(8) [ 1, 25, 3, 85, 7, 9, 15, 75 ]
test.html:6:3
06:31:40,321
SyntaxError: label not found
test.html:30:14
EXEMPLE 1:
Fonctions Imbriquées - 13 / 27 samedi, 24. novembre 2018 (1:05 )
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VI
congrats();
return "Englobante";
}
console.log(personne());
// Englobante test.html:10:1
console.log(congrats());
// Uncaught ReferenceError:
// congrats is not defined
console.log(personne.congrats());
// Uncaught TypeError:
// personne.congrats is not a function
</script>
EXEMPLE 2:
const r = personne("Bonjour");
console.log("Appel externe de r('Koye')")
r("Koye"); // Bonjour Koye test.html:4:13
</script>
Exécution :
function recommendation(sx){
if(!sx) sx="";
if(age>50){
const msg =
"Attention! Âge "+age+" > 50 ans! Veillez à";
if(sx.toLowerCase().startsWith("m") ||
Fonctions Imbriquées - 15 / 27 samedi, 24. novembre 2018 (1:05 )
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VI
sx.toLowerCase().startsWith("h"))
{
console.log(msg,"l'andropause".toUpperCase())
}
else if(sx.startsWith("F"))
{
console.log(msg,"la ménopause".toUpperCase())
}
else {
console.log("Sexe Vide.".toUpperCase())
}
}
}
/////////////////////////////////
recommendation(gender);
/////////////////////////////////
}
personne(1993,"");
// NIHIL.
personne(1953,"");
// SEXE VIDE. test.html:22:11
personne(1953,"H");
// Attention! Âge 65 > 50 ans!
// Veillez à L'ANDROPAUSE test.html:15:11
personne(1953,"F");
// Attention! Âge 65 > 50 ans!
// Veillez à LA MÉNOPAUSE test.html:19:11
</script>
/////////////////////////////////
personne.rec = recommandation;
/////////////////////////////////
}
personne(1953);
personne.rec("Homme");
// Attention! Âge [65] > 50 ans!
// Veillez à L'ANDROPAUSE test.html:11:16
</script>
this.recommandation = function(sx){
if(!sx) sx="";
if(age>50){
const msg =
"Attention! Âge "+age+" > 50 ans! Veillez à";
if(sx.toLowerCase().startsWith("m") ||
sx.toLowerCase().startsWith("h"))
{
console.log(msg,"l'andropause".toUpperCase())
}
else if(sx.startsWith("F")) {
console.log(msg,"la ménopause".toUpperCase())
}
else {
console.log("Sexe Vide.".toUpperCase())
}
}
}
}
inst.recommandation("Femme");
// Attention! Âge 65 > 50 ans! Veillez à LA MÉNOPAUSE
</script>
function recommendation(sx){
if(!sx) sx="";
if(age>50){
const msg =
"Attention! Âge "+age+" > 50 ans! Veillez à";
if(sx.toLowerCase().startsWith("m") ||
Fonctions Imbriquées - 18 / 27 samedi, 24. novembre 2018 (1:05 )
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VI
sx.toLowerCase().startsWith("h")) {
console.log(msg,"l'andropause".toUpperCase())
}
else if(sx.startsWith("F")) {
console.log(msg,"la ménopause".toUpperCase())
}
else {
console.log("Sexe Vide.".toUpperCase())
}
}
}
/////////////////////////////////
return recommendation;
/////////////////////////////////
}
let emissaire=personne(1953);
var rec = emissaire("Homme")
// Attention! Âge 65 > 50 ans! Veillez à L'ANDROPAUSE
function recommendation(sx){
if(!sx) sx="";
let L=50;
const msg="Attention! Âge "+age+
` ${age>=50?'>=':'<'} ` + L+" ans! Veillez à";
if(age>=(L=50)){
if(sx.toLowerCase().startsWith("m") ||
sx.toLowerCase().startsWith("h")) {
Fonctions Imbriquées - 19 / 27 samedi, 24. novembre 2018 (1:05 )
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VI
console.log(msg,"l'andropause".toUpperCase())
}
else if(sx.startsWith("F")) {
console.log(msg,"la ménopause".toUpperCase())
}
else {
console.log(msg,"...Sexe Vide.".toUpperCase())
}
}
else console.log(
msg,"...VoTrE jeUnesSe.".toUpperCase()
)
}
return recommendation;
}
let emissaire;
/////////////////////////////////
emissaire=personne(1963)("Homme")
// Attention! Âge 55 >= 50 ans! Veillez à L'ANDROPAUSE
emissaire=personne(1973)("Mâle")
// Attention! Âge 45 < 50 ans! Veillez à ...VOTRE JEU-
NESSE.
emissaire=personne(1953)("")
// Attention! Âge 65 >= 50 ans! Veillez à ...SEXE VIDE.
emissaire=personne(1919)("Femelle")
// Attention! Âge 99 >= 50 ans! Veillez à LA MÉNOPAUSE
emissaire=personne(1969)()
// Attention! Âge 49 < 50 ans! Veillez à ...VOTRE JEU-
NESSE.
emissaire=personne(1968 , "Femme")()
// Attention! Âge 50 >= 50 ans! Veillez à ...SEXE VIDE.
emissaire=personne()("Femme",1923)
// Attention! Âge NaN < 50 ans! Veillez à ...VOTRE JEU-
NESSE.
/////////////////////////////////
</script>
function recommendation(sx){
if(!sx) sx="";
if(age>50){
const msg =
"Attention! Âge "+age+" > 50 ans! Veillez à";
if(sx.toLowerCase().startsWith("m") ||
sx.toLowerCase().startsWith("h")) {
console.log(msg,"l'andropause".toUpperCase())
}
else if(sx.startsWith("F")) {
console.log(msg,"la ménopause".toUpperCase())
}
else {
console.log("Sexe Vide.".toUpperCase())
}
}
}
/////////////////////////////////
return [recommendation , age];
/////////////////////////////////
}
let emissaire=personne(1953);
if(emissaire[1]>50) {
var rec = emissaire[0]("")
// SEXE VIDE.
Avec la méthode
« Object.getOwnPropertyDescriptors(emissaire) » :
function recommendation(sx){
if(!sx) sx="";
if(age>50){
const msg =
"Attention! Âge "+age+" > 50 ans! Veillez à";
if(sx.toLowerCase().startsWith("m") ||
sx.toLowerCase().startsWith("h")) {
console.log(msg,"l'andropause".toUpperCase())
}
else if(sx.startsWith("F")) {
console.log(msg,"la ménopause".toUpperCase())
}
else {
console.log("Sexe Vide.".toUpperCase())
}
}
}
/////////////////////////////////
return [recommendation , age];
/////////////////////////////////
}
let emissaire=personne(1953);
console.dir(Object.getOwnPropertyDescriptors(emissaire))
//
// Object
A 0:{
value: ƒ, writable: true,
enumerable: true, configurable: true
}
B 1:{
value: 65, writable: true,
enumerable: true, configurable: true
}
C length:{
value: 2, writable: true,
enumerable: false, configurable: false
Fonctions Imbriquées - 22 / 27 samedi, 24. novembre 2018 (1:05 )
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VI
}
D __proto__:Object
</script>
function recommendation(sx){
if(!sx) sx="";
if(age>50){
const msg =
"Attention! Âge "+age+" > 50 ans! Veillez à";
if(sx.toLowerCase().startsWith("m") ||
sx.toLowerCase().startsWith("h")) {
console.log(msg,"l'andropause".toUpperCase())
}
else if(sx.startsWith("F")) {
console.log(msg,"la ménopause".toUpperCase())
}
else {
console.log("Sexe Vide.".toUpperCase())
}
}
}
/////////////////////////////////
return [recommendation , age];
/////////////////////////////////
}
let emissaire=personne(1953);
for(const key in emissaire){
console.log(key, emissaire[key])
}
/*
0 ƒ recommendation(sx){
if(!sx) sx="";
if(age>50){
const msg =
"Attention! Âge "+age+" > 50 ans! Veillez à";
Fonctions Imbriquées - 23 / 27 samedi, 24. novembre 2018 (1:05 )
J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VI
if(sx.toLowerCase().startsWith("m") ||
sx.toLowerCase(…
1 65
*/
</script>
function recommendation(sx){
if(!sx) sx="";
if(age>50){
const msg="Attention! Âge "+age+" > 50 ans!
Veillez à";
if(sx.toLowerCase().startsWith("m") ||
sx.toLowerCase().startsWith("h")) {
console.log(msg,"l'andropause".toUpperCase())
}
else if(sx.startsWith("F")) {
console.log(msg,"la ménopause".toUpperCase())
}
else {
console.log("Sexe Vide.".toUpperCase())
}
}
}
/////////////////////////////////
return [recommendation , age];
/////////////////////////////////
}
let ITERABLE=personne(1953);
console.log(ITERATOR.next())
// Object { value: undefined, done: true }
</script>
<a href="javascript:
console.dir(Object.getOwnPropertyDescriptors(HTMLDivElemen
t))">
Without Following Link
</a>
<a href="javascript:my_func('http://diasmath.blogg.org')">
Following Link
</a>
<script language="JavaScript">
function my_func(s) {
console.dir(Object.getOwnPropertyDescriptors(Document));
window.open(s)
}
</script>
<a href="#"
onclick="javascript:my_func('http://diasmath.blogg.org')">
Lien Dièse
</a>
<script language="JavaScript">
function my_func(s) {
console.dir(Object.getOwnPropertyDescriptors(Document));
window.open(s)
}
</script>
<a href="#"
onclick="my_func('http://diasmath.blogg.org')">
Lien Dièse
</a>
<script language="JavaScript">
function my_func(s) {
console.dir(Object.getOwnPropertyDescriptors(Document));
window.open(s)
}
</script>
Mots-clés :
fonctions imbriquées, curry ,closure, objets de première classe, objet
Function, callable object, objets de premier ordre, objets de première
classe, fonction englobante, variable locale, instances, constructeur,
curry, fermeture, closure, getOwnPropertyDescriptors, hypertexte