javascript - paramètres du reste
Transcription
javascript - paramètres du reste
Paramètres du reste J AVA S C R I P T (Programmation Internet) Pour Débutants J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga +243 - 851278216 - 899508675 - 995624714 - 902263541 - 813572818 [email protected] INTRODUCTION : En JavaScript, on peut passer à une fonction plus d’arguments qu’on a déclaré de paramètres formels dans la définition de la fonction à appeler et à laquelle on passe des paramètres : <script type="text/javascript"> "use strict"; function callFct(){ console.log( "Les " + arguments.length + " arguments passés sont :"); for(let k in arguments) { console.log(arguments[k]); } } callFct( "Diasoluka" , new Date().getFullYear() , Math.PI) callFct("Diasoluka" ,new Date().getFullYear() , Math["PI"] , Math.E , Math.SQRT2) </script> Exécution : Les 3 arguments passés sont : test.html:4:7 Diasoluka test.html:9:11 J.D.B. DIASOLUKA Nz. Luyalu 2018 3.141592653589793 JavaScript Tome-II test.html:9:11 test.html:9:11 Les 5 arguments passés sont : test.html:4:7 Diasoluka 2018 3.141592653589793 2.718281828459045 1.4142135623730951 test.html:9:11 test.html:9:11 test.html:9:11 test.html:9:11 test.html:9:11 On peut aussi accéder aux arguments comme suit : <script type="text/javascript"> "use strict"; function called(){ console.log( "Les " + arguments.length + " arguments passés sont :"); for(let k=0 , l=arguments.length ; k<l ; k++) { console.log(arguments[k]); } } called( "Diasoluka" , new Date().getFullYear() , Math.PI) called("Diasoluka",new Date().getFullYear() , Math.PI , Math.E , Math.SQRT2) </script> Exécution : Les 3 arguments passés sont : test.html:4:7 Diasoluka test.html:9:11 Paramètres du reste - 2 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu 2018 3.141592653589793 JavaScript Tome-II test.html:9:11 test.html:9:11 Les 5 arguments passés sont : test.html:4:7 Diasoluka 2018 3.141592653589793 2.718281828459045 1.4142135623730951 test.html:9:11 test.html:9:11 test.html:9:11 test.html:9:11 test.html:9:11 On n’est donc en fait pas obligé de déclarer des paramètres formels dans la définition d’une fonction, si ce n’est pour faciliter la correspondance qui donne pratiquement exactement le même résultat : Mais on n’est pas non plus obligé d’utiliser tous les paramètres formels nommés, tout comme on peut n’en utiliser aucun. Certains paramètres peuvent être prévus pour les versions ultérieures du programme, en tant que « placeholder ». Pour sauter un argument tout en passant (envoyant) l’argument qui vient après lui dans la liste, il suffit d’utiliser « null » ou « undefined » sans guillemets comme valeur de l’argument à sauter : <script type="text/javascript"> "use strict"; let fct = function (p1,p2,p3,p4) { console.log(p1,p2,p3); console.log( arguments[0],arguments[1],arguments[2] ); console.log( arguments[0],arguments[1],arguments[2], arguments[3],arguments[4],arguments[5] ); console.log(""); } fct(); fct(1); fct(1,2); Paramètres du reste - 3 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu fct(undefined,2); fct(null,2); JavaScript Tome-II // fct( , 2); // SyntaxError: expected expression, // got ',' test.html:19:6 </script> Exécution : undefined undefined undefined test.html:3:5 undefined undefined undefined test.html:4:5 undefined undefined undefined undefined undefined undefined test.html:7:5 1 undefined undefined test.html:3:5 1 undefined undefined test.html:4:5 1 undefined undefined undefined undefined undefined test.html:7:5 1 2 undefined 1 2 undefined 1 2 undefined undefined undefined undefined test.html:3:5 test.html:4:5 test.html:7:5 undefined 2 undefined test.html:3:5 undefined 2 undefined test.html:4:5 undefined 2 undefined undefined undefined undefined test.html:7:5 null 2 undefined test.html:3:5 null 2 undefined test.html:4:5 null 2 undefined undefined undefined undefined test.html:7:5 N.B. : Les fonctions fléchées (= Arrow Functions = fat arrow functions) ne tolèrent (n’acceptent) pas le mot-clé « arguments ». <script type="text/javascript"> "use strict"; const fselo = function(p) { Paramètres du reste - 4 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II let s,r; if(arguments[0]==undefined){ console.log("'"+arguments[0]+"'") // 'undefined' console.log("'"+typeof arguments[0]+"'") // 'undefined' } } fselo(); const fself = (p) => { let s,r; if(arguments[0]==undefined){ } // 08:42:15,637 ReferenceError: // arguments is not defined } fself(); </script> test.html:17:1 LES PARAMÈTRES DU RESTE : En fait, quand on passe des arguments à une fonction lors de son invocation, tous ces arguments (arguments ordinaires et ceux du paramètre du reste) sont regroupés dans une même Array avec Yandex, et dans un objet avec Firefox, appelé dans les deux cas « arguments ». <script type="text/javascript"> "use strict"; let fct = function(p, q, r, ...reste) { console.log("L'ensemble des arguments passés sont :"); console.log(arguments) console.log("ou"); console.log(Object.entries(arguments)); } fct( 1,"deux",{trois:3,quatre:4}, "pr1","pr2","pr3" ); </script> Paramètres du reste - 5 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Exécution avec Firefox : Exécution avec Yandex : Paramètres du reste - 6 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Cependant, les paramètres du reste sont encore particulièrement quant à eux regroupés avec les deux navigateurs, dans une array spéciale individualisée portant le nom que vous avez donné à ce paramètre du reste. <script type="text/javascript"> "use strict"; let t; Paramètres du reste - 7 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu let fct = function(p, q, r, ...reste) { JavaScript Tome-II console.log("Les arguments du reste passés sont :"); console.log(reste) console.log(Object.entries(reste)) console.log(Object.keys(reste)) console.log(Object.values(reste)) } fct( 1,"deux",{trois:3,quatre:4}, "pr1","pr2","pr3" ); </script> Exécution avec Firefox : Paramètres du reste - 8 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Exécution avec Yandex : Paramètres du reste - 9 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Syntactiquement parlant, un « paramètre du reste » est un paramètre nommé précédé de trois points (…) qui, lors d’un appel à fonction, devient une Array contenant le reste d’arguments (ceux qui n’ont pas de correspondant dans la liste des paramètres formels nommés qui le précède. <script type="text/javascript"> "use strict"; let t; let fct = function(p, q, r, ...reste) { console.log("L'ensemble des arguments passés sont :"); console.log(arguments); console.log("ou"); console.log(Object.entries(arguments)); console.log(Object.keys(arguments)) console.log(Object.values(arguments)) console.log("=".repeat(35)) Paramètres du reste - 10 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II console.log( "Les entries, keys et values de"+ " « arguments » sont :"); console.log(Object.entries(arguments)) console.log(Object.keys(arguments)) console.log(Object.values(arguments)) console.log("=".repeat(35)) console.log("Les arguments du reste passés sont :"); console.log(reste) console.log(Object.entries(reste)) console.log(Object.keys(reste)) console.log(Object.values(reste)) return arguments; } let retf=fct( 1,"deux",{trois:3,quatre:4}, "pr1","pr2","pr3" ); t=""; for(let i of retf) t+=i+" | "; console.log(t); </script> Exécution avec Firefox : Paramètres du reste - 11 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Exécution avec Yandex : Paramètres du reste - 12 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II On ne peut avoir qu’un seul paramètre du reste, et il doit être le dernier des paramètres nommés, bien que le nombre de paramètres formels nommés qui le précèdent ne soit pas limité mais il en faut au moins un. <script type="text/javascript"> "use strict"; let restParametersFct = (formalParameter, ...restParametes) => { console.log(formalParameter); console.log(restParametes); for ( Paramètres du reste - 13 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II let i=0, len=restParametes.length ; i<len ; i++) { console.log(restParametes[i]); } } restParametersFct( "named_Formal_Parameter", 'rP1', 'rP2', 'rP3', 'rP4' ); </script> Exécution : 10:41:27,512 named_Formal_Parameter test.html:5:5 10:41:27,512 test.html:6:5 Array(4) [ "rP1", "rP2", "rP3", "rP4" ] 10:41:27,513 10:41:27,515 10:41:27,515 10:41:27,515 rP1 rP2 rP3 rP4 test.html:9:7 test.html:9:7 test.html:9:7 test.html:9:7 Une application pratique des paramètres du reste c’est de trouver le « max » ou la « min » d’une suite de nombres dans une « Array » : <script type="text/javascript"> "use strict"; const values = [16,-3, 23,-11,-25,-46, 44,18,36,-22]; console.log( Math.max(...values) ); // 44 console.log( Math.min(...values) ); // -46 </script> Une mini base de données avec les paramètres du reste : <script type="text/javascript"> "use strict"; const titl = "MINI BASE DE DONNÉES", tl = titl.length, al=10; console.log( Paramètres du reste - 14 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II titl .padEnd(tl+al,"*") .padStart(tl+(al*2),"*"),"\n" ); console.log("".padEnd(tl+(al*2),"=") , "\n\n") let restParamsFct = (NamedFormalParam, ...restParam) => { let retObj = {}; for(let k=0, len=restParam.length ; k<len ; k++){ console.log( "[restParam["+k+"]] =",[restParam[k]] ); console.log("NamedFormalParam[restParam["+k+"]] =", NamedFormalParam[restParam[k]]+"\n\n" ); } for(let k=0, len=restParam.length ; k<len ; k++){ retObj[restParam[k]] = NamedFormalParam[restParam[k]]; } console.log("".padEnd(50,"=")); return retObj; } let corpsHumain = { deplacement: 'Membres', alimentation: 'Système Digestif', sexe: 'Mâle ou Femelle', intelligence: 'Cerveau' }; let ovnis = { deplacement: 'MHD', alimentation: 'UnUnPentium', sexe: 'Sans Objet', vitesse: '+++Mach', Paramètres du reste - 15 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu materiau: 'Cosmique', intelligence: 'Télépathie' }; JavaScript Tome-II let corpsHumainDescr = restParamsFct( corpsHumain, 'alimentation', 'deplacement', 'intelligence', 'sexe' ); let ovniDescr = restParamsFct(ovnis, 'deplacement', "intelligence", 'vitesse', 'materiau', 'alimentation'); console.log(corpsHumain); console.log(corpsHumainDescr); console.log(corpsHumainDescr.deplacement); console.log(corpsHumainDescr.sexe); console.log(ovnis); console.log(ovniDescr); console.log(ovniDescr.sexe); console.log(ovniDescr.deplacement); </script> Exécution : **********MINI BASE DE DONNÉES********** ======================================== test.html:6:3 test.html:11:3 [restParam[0]] = Array [ "alimentation" ] test.html:19:7 NamedFormalParam[restParam[0]] = Système Digestif test.html:23:7 [restParam[1]] = Array [ "deplacement" ] NamedFormalParam[restParam[1]] = Membres Paramètres du reste test.html:19:7 test.html:23:7 - 16 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu [restParam[2]] = Array [ "intelligence" ] NamedFormalParam[restParam[2]] = Cerveau JavaScript Tome-II test.html:19:7 test.html:23:7 [restParam[3]] = Array [ "sexe" ] test.html:19:7 NamedFormalParam[restParam[3]] = Mâle ou Femelle test.html:23:7 ================================================== [restParam[0]] = Array [ "deplacement" ] NamedFormalParam[restParam[0]] = MHD test.html:19:7 test.html:23:7 [restParam[1]] = Array [ "intelligence" ] NamedFormalParam[restParam[1]] = Télépathie test.html:19:7 test.html:23:7 [restParam[2]] = Array [ "vitesse" ] NamedFormalParam[restParam[2]] = +++Mach test.html:19:7 test.html:23:7 [restParam[3]] = Array [ "materiau" ] NamedFormalParam[restParam[3]] = Cosmique test.html:19:7 test.html:23:7 [restParam[4]] = Array [ "alimentation" ] test.html:19:7 NamedFormalParam[restParam[4]] = UnUnPentium test.html:23:7 ================================================== Object { deplacement: "Membres", alimentation: "Système Digestif", sexe: "Mâle ou Femelle", intelligence: "Cerveau" } test.html:69:3 Object { alimentation: "Système Digestif", deplacement: "Membres", intelligence: "Cerveau", sexe: "Mâle ou Femelle" } test.html:70:3 Membres Mâle ou Femelle Paramètres du reste test.html:71:3 test.html:72:3 - 17 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Object { deplacement: "MHD", alimentation: "UnUnPentium", sexe: "Sans Objet", vitesse: "+++Mach", materiau: "Cosmique", intelligence: "Télépathie" } test.html:74:3 Object { deplacement: "MHD", intelligence: "Télépathie", vitesse: "+++Mach", materiau: "Cosmique", alimentation: "UnUnPentium" } test.html:75:3 undefined MHD test.html:76:3 test.html:77:3 Un petit code qui utilise plusieurs aspects (fonctionnalités et implications) des « paramètres du reste » : <script type="text/javascript"> "use strict"; let restParametersFct = (formalParameter, ...restParameters) => { console.log(""); console.log("formalParameter =",formalParameter); console.log("formalParameter[0] =",formalParameter[0]); console.log("restParameters =",restParameters); console.log( "restParameters.toString() =", restParameters.toString() ); console.log( "String(restParameters) =", String(restParameters) ); console.log(""); console.log("".padStart(49,"=")); Paramètres du reste - 18 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II let tmp = "= " + formalParameter[0]+" => "+ restParameters.toString(); tmp = tmp.padEnd(48," ") + "="; console.log(tmp.padStart(42,"= ")); console.log("".padEnd(49,"=")); console.log(""); for (let i=0, len=restParameters.length ; i<len ; i++) { console.log("restParameters["+i+"] =",restParameters[i]); console.log(""); } } const oArg = [ {"Dadet":["Homme","Kinois"]}, {"Pierrette":["Femme","Alien","Umo","ExtraGalactic"]}, {"Jean":["Homme","Luozien","Kinoinisé"]} ]; console.log("Object.keys(oArg) ***"); console.log(Object.keys(oArg)); console.log(""); console.log("Object.values(oArg) +++"); console.log(Object.values(oArg)); console.log(""); for(let k=0,l=oArg.length ; k<l ; k++ ){ let vl = Object.values(oArg)[k]; console.log( "Object.keys(Object.values(oArg)[k])" , " /// [KEYS]" ); console.log( Object.keys(Object.values(oArg)[k])); Paramètres du reste - 19 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II console.log(""); console.log( "Object.values(Object.values(oArg)[k])", " \\\\\\ [VALUES]" ); console.log( Object.values(Object.values(oArg)[k])); restParametersFct( Object.keys(vl), Object.values(vl) ); } </script> Exécution dans la console, et développement des structures : 14:34:59,400 14:34:59,401 Object.keys(oArg) *** test.html:43:3 Array(3) [ "0", "1", "2" ] 0: "0" 1: "1" 2: "2" length: 3 __proto__: Array(0) test.html:44:3 14:34:59,402 14:34:59,402 Object.values(oArg) +++ test.html:48:3 Array(3) [ {…}, {…}, {…} ] (3) [{…}, {…}, {…}] 0: {Dadet: Array(2)} 1: {Pierrette: Array(4)} 2: {Jean: Array(3)} length: 3 __proto__: Array(0) test.html:49:3 Paramètres du reste - 20 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II 14:34:59,404 Object.keys(Object.values(oArg)[k]) /// [KEYS] test.html:57:6 14:34:59,405 Array [ "Dadet" ] 0: "Dadet" length: 1 __proto__: Array(0) test.html:62:6 14:34:59,406 Object.values(Object.values(oArg)[k]) \\\ [VALUES] test.html:66:6 14:34:59,406 Array [ (2) […] ] [Array(2)] 0: (2) ["Homme", "Kinois"] length: 1 __proto__: Array(0) test.html:71:6 14:34:59,407 formalParameter = Array [ "Dadet" ] ["Dadet"] 0: "Dadet" length: 1 __proto__: Array(0) test.html:6:5 14:34:59,408 formalParameter[0] = Dadet test.html:7:5 14:34:59,408 restParameters = Array [ (1) […] ] Paramètres du reste - 21 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu 0: [Array(2)] length: 1 __proto__: Array(0) test.html:8:5 JavaScript Tome-II 14:34:59,409 restParameters.toString() = Homme,Kinois test.html:9:5 14:34:59,410 String(restParameters) = Homme,Kinois test.html:13:5 14:34:59,410 ================================================= = Dadet => Homme,Kinois = ================================================= test.html:27:5 14:34:59,411 restParameters[0] = Array [ (2) […] ] 0: (2) ["Homme", "Kinois"] length: 1 __proto__: Array(0) test.html:31:7 14:34:59,412 Object.keys(Object.values(oArg)[k]) /// [KEYS] test.html:57:6 14:34:59,413 Array [ "Pierrette" ] 0: "Pierrette" length: 1 __proto__: Array(0) test.html:62:6 Paramètres du reste - 22 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II 14:34:59,413 Object.values(Object.values(oArg)[k]) \\\ [VALUES] test.html:66:6 14:34:59,413 Array [ (4) […] ] [Array(4)] 0: (4) ["Femme", "Alien", "Umo", "ExtraGalactic"] length: 1 __proto__: Array(0) test.html:71:6 14:34:59,414 formalParameter = Array [ "Pierrette" ] 0: "Pierrette" length: 1 __proto__: Array(0) test.html:6:5 14:34:59,414 formalParameter[0] = Pierrette test.html:7:5 14:34:59,414 restParameters = Array [ (1) […] ] [Array(1)] 0: [Array(4)] length: 1 __proto__: Array(0) test.html:8:5 14:34:59,415 restParameters.toString() = Femme,Alien,Umo,ExtraGalactic Paramètres du reste - 23 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu test.html:9:5 JavaScript Tome-II 14:34:59,415 String(restParameters) = Femme,Alien,Umo,ExtraGalactic test.html:13:5 ================================================= = Pierrette => Femme,Alien,Umo,ExtraGalactic = ================================================= test.html:27:5 14:34:59,416 restParameters[0] = Array [ (4) […] ] [Array(4)] 0: (4) ["Femme", "Alien", "Umo", "ExtraGalactic"] length: 1 __proto__: Array(0) test.html:31:7 14:34:59,418 Object.keys(Object.values(oArg)[k]) /// [KEYS] test.html:57:6 14:34:59,418 Array [ "Jean" ] ["Jean"] 0: "Jean" length: 1 __proto__: Array(0) test.html:62:6 14:34:59,418 Object.values(Object.values(oArg)[k]) \\\ [VALUES] test.html:66:6 14:34:59,419 Array [ (3) […] ] 0: (3) ["Homme", "Luozien", "Kinoinisé"] Paramètres du reste - 24 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu length: 1 __proto__: Array(0) test.html:71:6 JavaScript Tome-II 14:34:59,419 formalParameter = Array [ "Jean" ] ["Jean"] 0: "Jean" length: 1 __proto__: Array(0) test.html:6:5 14:34:59,420 formalParameter[0] = Jean test.html:7:5 14:34:59,420 restParameters = Array [ (1) […] ] [Array(1)] 0: [Array(3)] length: 1 __proto__: Array(0) test.html:8:5 14:34:59,420 restParameters.toString() = Homme,Luozien,Kinoinisé test.html:9:5 14:34:59,421 String(restParameters) = Homme,Luozien,Kinoinisé test.html:13:5 ================================================= Paramètres du reste - 25 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II = Jean => Homme,Luozien,Kinoinisé = ================================================= test.html:27:5 14:34:59,425 restParameters[0] = Array [ (3) […] ] [Array(3)] 0: (3) ["Homme", "Luozien", "Kinoinisé"] length: 1 __proto__: Array(0) test.html:31:7 Quelques propriétés du « paramètre du reste » : <script type="text/javascript"> "use strict"; let s= (p1, ...p2) => { console.log(p2); } s(); </script> 21:30:16,894 Array [] test.html:3:4 [] length: 0 <prototype>: Array [] <prototype>: [] concat: function concat() constructor: function Array() concat: function concat() every: function every() filter: function filter() forEach: function forEach() from: function from() indexOf: function indexOf() isArray: function isArray() join: function join() lastIndexOf: function lastIndexOf() Paramètres du reste - 26 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II length: 1 map: function map() name: "Array" of: function of() pop: function pop() prototype: Array [] push: function push() reduce: function reduce() reduceRight: function reduceRight() reverse: function reverse() shift: function shift() slice: function slice() some: function some() sort: function sort() splice: function splice() unshift: function unshift() Symbol(Symbol.species): Getter <prototype>: function () copyWithin: function copyWithin() entries: function entries() every: function every() fill: function fill() filter: function filter() find: function find() findIndex: function findIndex() flat: function flat() flatMap: function flatMap() forEach: function forEach() includes: function includes() indexOf: function indexOf() join: function join() keys: function keys() lastIndexOf: function lastIndexOf() length: 0 map: function map() pop: function pop() push: function push() reduce: function reduce() reduceRight: function reduceRight() reverse: function reverse() shift: function shift() slice: function slice() some: function some() Paramètres du reste - 27 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II sort: function sort() splice: function splice() toLocaleString: function toLocaleString() toSource: function toSource() toString: function toString() unshift: function unshift() values: function values() Symbol(Symbol.iterator): function values() Symbol(Symbol.unscopables): Object { copyWithin: true, entries: true, fill: true, find: true, findIndex: true, includes: true, keys: true, values: true, } <prototype>: Object { … } Une forme particulière de « paramètre du reste » est l’array des variables passées à une fonction via un template de « littérale de chaîne », mais aussi l’array des textes séparés par ses variables et stockée dans la première variable de la fonction appelée : <script> "use strict"; const cl=console.log; const pend = (p1,...p2) => { const len1=p2[0].length+p2[1].length, len2=len1+p1[2].length; return p2[0].padStart(len1,p2[1]).padEnd(len2,p1[2]); }; const w='www.diasoluka',h="http://"; const rp=pend`${w}${h}.luy`; cl(rp); </script> Paramètres du reste - 28 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Un dernier mot sur les « paramètres du reste » : LES PARAMÈTRES DU RESTE sont un type particulier d’Array est le paramètre du reste. <script type="text/javascript"> "use strict"; let f = (p, ...a) => { console.log("a =",a); } f(); </script> En fait, les Arrays sont simplement des littéraux d’objet dont les labels sont étiquetés avec des nombres ordonnés à partir de l’indice zéro. Voyez leur structure ci-après : <script type="text/javascript"> "use strict"; let f = (p, ...a) => { console.log("a =",a); return a; } let r=f("va dans p", "Zéro","Un","Deux","Trois","Quatre","Cinq"); console.log("Object.entries(r)",Object.entries(r)); console.log("Object.values(r)",Object.values(r)); </script> Paramètres du reste - 29 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II a = Array(6) [ "Zéro", "Un", "Deux", "Trois", "Quatre", "Cinq" ] test.html:3:3 Object.entries(r) Array(6) [ (2) […], (2) […], (2) […], (2) […], (2) […], (2) […] ] test.html:10:3 Object.values(r) Array(6) [ "Zéro", "Un", "Deux", "Trois", "Quatre", "Cinq" ] test.html:11:3 Paramètres du reste - 30 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Voici comment reconstituer cette Array avec un « Object literal » : <script type="text/javascript"> "use strict"; let r = { 0:"Zéro" , 1:"Un" , 2:"Deux", 3:"Trois" , 4:"Quatre" , 5:"Cinq" } console.log("Object.entries(r)",Object.entries(r)); console.log("Object.values(r)",Object.values(r)); </script> Paramètres du reste - 31 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Confrontons les deux paradigmes : <script type="text/javascript"> "use strict"; let a=[ "Zéro" , "Un" , "Deux" , "Trois" , "Quatre" , "Cinq" ] let o={ 0:"Zéro" , 1:"Un" , 2:"Deux" , 3:"Trois" , 4:"Quatre" , 5:"Cinq" } console.log("ARRAY" , "a[0] =" , a[0]); console.log("HASH" , "o[0] =" , o[0]); </script> Paramètres du reste - 32 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II Recommandation : Pour tester un code HTML, DOM, JavaScript, CSS, allez sur l’IDE du site http://jsfiddle.net/, dommage qu’il faut être online (connecté). Kinshasa, le jeudi 4 avril 2019 - 10:48:08 PM Mots-clés : JAVASCRIPT, Programmation Internet, paramètres du reste, base de données Paramètres du reste - 33 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II DIASOLUKA Nz. Luyalu Docteur en Médecine, Chirurgie & Accouchements (1977), CNOM : 0866 - Spécialiste en ophtalmologie (1980) Études humanités : Scientifique - Mathématiques & Physique. Informaticien-amateur, Programmeur et WebMaster. Chercheur indépendant, autonome et autofinancé, bénévole, sans aucun conflit d’intérêt ou liens d'intérêts 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 - 991239212 - 902263541 - 813572818 [email protected] Autre Lecture : https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-de-LaCreation D’autres publications pouvant aussi intéresser : • https://www.scribd.com/document/377036251/LeDosage-Des-Medicaments-en-Cac-Cas • https://www.scribd.com/document/377035454/LeHasard-Des-Thermometres-Non-contact-a-Infrarouge Paramètres du reste - 34 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II • https://www.scribd.com/document/376222482/PetiteIntroduction-Aux-Fonctions-JavaScript • https://www.scribd.com/document/376221919/La-Foien-Jesus-Christ-Pour-Quoi-Faire • https://www.scribd.com/document/375689778/Lacuitevisuelle-angulaire • https://www.scribd.com/document/375349851/Lavariable-This • https://www.scribd.com/document/375024162/FonctionsImbriquees-en-JS • https://www.scribd.com/document/374789297/FormatInterne-Des-Objets-JavaScript • https://www.scribd.com/document/374788758/Iterationsen-JavaScript • https://www.scribd.com/document/374738470/Le-PlusGrand-Secret-de-La-Creation • https://www.scribd.com/document/374597969/NouvelleFormule-d-IMC-indice-de-doduite-Selon-Dr-Diasoluka • https://www.scribd.com/document/373847209/PropertyDescriptors • https://www.scribd.com/document/373833282/l-ObjetGlobal-Window • https://www.scribd.com/document/372665249/JavascriptTome-II • https://www.scribd.com/document/355291488/motiliteoculaire-2 Paramètres du reste - 35 / 36 - jeudi, 4. avril 2019 (10:48 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-II • https://www.scribd.com/document/355291239/motiliteoculaire-I • https://www.scribd.com/document/355290248/Script-dAnalyses-Des-Reflexes-Pupillomoteurs • https://www.scribd.com/document/321168468/Renseigne ments-Id-et-Anthropometriques • https://www.scribd.com/document/320856721/Emission31-Jul-2016 • https://www.scribd.com/document/318182982/Complicati on-Visuelle-du-Traitement-de-La-Malaria • https://www.scribd.com/document/318180637/RapportEntre-Oxymetrie-Et-Type-Respiration • https://www.scribd.com/document/315746265/Classificati on-Des-Medicaments • https://www.scribd.com/document/315745909/Incongruen ces-Heresies-et-Heterodoxies-de-la-Notion-deLaboratoire • https://www.scribd.com/document/315745725/RapportEntre-Oxymetrie-Et-Type-Respiration Paramètres du reste - 36 / 36 - jeudi, 4. avril 2019 (10:48 )