javascript tome xxi - Destructuration & paramètres

Transcription

javascript tome xxi - Destructuration & paramètres
J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga
J AVA S C R I P T (Programmation Internet) V O L . V I
+243 - 851278216 - 899508675 - 991239212 - 902263541 - 813572818
Aprè s le succè s foudroyant du Vol I destiné à dé montrer de
faç on pragmatique, pratique la puissance du JavaScript à ré soudre mê me les problè mes Mathé matiques (*l’
algorithmique
d’
analyse des nombres de Kaprekar, *le calcul du carr é d’
un
nombre, *le carré parfait, *les tests conditionnels, *quelques
diffé rences entre langage C et JavaScript, mais aussi
*diffé rents é diteurs de texte et leurs particularit é s), voici
le VOL II qui est premiè rement destiné à enrichir mon mé mento
personnel mais aussi à aider les autres dans leurs premiers
pas dans ce langage.
Cette dé marche saugrenue, de commencer par le plus complexe
pour continuer par le simple, s’
explique par le fait que nous
voulions d’
abord faire l’
apologie du langage =JavaScript= avant
de nous lancer en douceur dans ses dé tails.
Cette sé rie pré sentera de faç ons trè s é lé gante, les concepts
fondamentaux (de base, essentiels) permettant un engagement
progressif, plus profond et plus efficace dans ce langage.
C’
est une fois de plus l’
occasion de remercier, honorer, glorifier et aduler le Grand Dieu, tout Puissant Cré ateur de toutes
choses qui existent (et qui n’
existent pas encore, visibles et
caché es, connues et ignoré es, imaginables et insoupç onnables...) pour toutes les merveilles qu’
Il a toujours accomplies depuis bien avant mê me la cré ation des univers, toutes
les dimensions et tout ce qui s’
y trouve y compris les intra- /
extra-terrestres et les entité s é thé riques non-biologiques.
DIASOLUKA Nz. Luyalu
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-VI
Docteur en Médecine, Chirurgie & Accouchements (1977),
CNOM : 0866 - Spécialiste en ophtalmologie (1980)
Informaticien-amateur, Programmeur et WebMaster.
CHAPITRE 12 : DÉSTRUCTURATION (DESTRUCTURING) ET
GESTION DES PARAMÈTRES :
La déstructuration est un moyen pratique d’extraire des valeurs
contenues dans des objets ou des arrays, via les noms de leurs
propriétés [quelque soit l’ordre des propriétés dans chacun des
objets].
La déstructuration est facile à comprendre quand on part du concept que les arrays et les objets sont des pointeurs sur adressesmémoire.
Par exemple :
let ob = { nom: 'Kortof', age: 45 }; // (A)
let { age: va , nom: vn } = ob; // (B).
console.log(vn+" "+va); // Kortof 45
Concernant les littéraux d’objet, ci-dessus dans (A) on crée le
littéral d’objet jetob avec deux propriétés, nom et age. L’objet ob
est donc un pointeur sur les propriétés nom et age qui en réalité
représentent des offsets à partir de l’adresse-mémoire pointée par
ob, cette adresse étant aussi celle du premier élément (ici propriété) de l’objet. Donc dans une array par exemple, l’adresse pointée
par l’array ar correspond à celle de son premier élément ar[0]
Variables & Functions
-2/6-
jeudi, 4. avril 2019 (10:49 )
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-VI
(vous pouvez facilement visualiser cette notion avec le langage C).
Dans (B) on définit des couples « prop , var », prop étant le nom
de la propriété dans l’objet ou l’array de référence ou objet/array
modèle = source [= les données à déstructurer] (A), et var le nom
[de la variable] par lequel on peut accéder (en dehors de ob) à
cette propriété [de l’objet de référence dans (A)]. (B) = cible ou
target [= le modèle utilisé pour la déstructuration], respecte la
syntaxe array ou littéral d’objet de (A), mais l’ordre des propriétés
est arbitraire, pas obligatoirement celui dans (A), les noms des
propriétés sont respectés.
Dans la déstructuration des littéraux d’objet donc, les propriétés
de l’objet de droite sont accessibles via des noms (ou id) des variables de l’objet de gauche.
let [p, q] = ['a','b']; // (C) p='a'; q='b'
console.log(p+" "+q); // a b
Concernant les arrays, l’array des deux variables [p, q] est
égale à l’array des valeurs ['a','b'], et donc les deux arrays
pointent la même adresse-mémoire, et donc les variables p et q
de l’array de gauche sont égaux aux valeurs équivalentes à leurs
positions respectives à l’array de droite ('a' et 'b').
Dans la déstructuration des arrays donc, les éléments (ou
membres) de l’array de droite sont accessibles par des noms (id)
des variables de la même position dans l’array de gauche.
Syntaxes de la destructuration :
// Déclarations de variable :
Variables & Functions
-3/6-
jeudi, 4. avril 2019 (10:49 )
J.D.B. DIASOLUKA Nz. Luyalu
let [var] = [value];
const [var] = [value];
var [var] = [value];
JavaScript Tome-VI
// Affectations (Assignments):
[var] = [value];
// Définitions de Paramètre :
function f([param]) { · }
f([arg]);
Autres exemples :
<script type="text/javascript"> "use strict";
let [x] = ['ax']; // 1 [Variable], 1 [val]
console.log(x+" "+[x]); // ax ax
// > x -> "ax"
// > [x] -> Array [ "ax" ]
const [xy] = ['axy',5]; // 1 [Variable], 2 [val]
console.log(xy+" "+[xy]); // axy axy
// > xy -> "axy"
// > [xy] -> Array [ "axy" ]
// > xy[0] -> "a"
// > xy[3] -> undefined
const [vw,yz] = ['avw']; // 2 [Variables], 1 [val]
console.log(vw+" "+[vw]+" "+yz+" "+[yz]);
// avw avw undefined
// > vw -> "avw"
// > [vw] -> Array [ "avw" ]
// > vw[0] -> "a"
// > vw[3] -> undefined
const [xy1,xy2] = ['axy1',5]; // 2 [var], 2 [val]
console.log(xy1+" "+[xy1]+" "+xy2+" "+[xy2]);
// axy1 axy1 5 5
// > xy1 -> "axy1"
// > [xy1] -> Array [ "axy1" ]
Variables & Functions
-4/6-
jeudi, 4. avril 2019 (10:49 )
J.D.B. DIASOLUKA Nz. Luyalu
// > xy2 -> 5
// > [xy2] -> Array [ 5 ]
JavaScript Tome-VI
let v = ['vvv']; // Var Array ordinaire
console.log(v+" "+[v]); // vvv vvv
// > v -> Array [ "vvv" ]
// > [v] -> Array [ […] ]
// […]
//
0: Array [ "vvv" ]
//
length: 1
//
__proto__: Array []
//
// > [v][0] -> Array [ "vvv" ]
// > v[0] -> "vvv"
let w = 'www'; // Var String ordinaire
console.log(w+" "+[w]); // www www
// > w -> "www"
// > [w] -> Array [ "www" ]
// > [w][0] -> "www"
// > w[0] -> "w"
let obj = {
a: [{ foo: 123, bar: 'abc' }, {}],
b: true
}; // (A)
let { a: [{foo: f}] } = obj; // f = 123 // (B)
// (A) obj = littéral d'objet à deux propriétés
dont :
// a = array à 2 littéraux d'objet, et
// b = une booléenne.
//
// (B) Déstructuration appariant f à 123 de foo
// de l'objet obj.
console.log(f); // 123
let {length : len} = 'abc'; // len = 3
console.log(len); // 3
let {toString: s} = 123;
// s = Number.prototype.toString
Variables & Functions
- 5 / 6 - jeudi, 4. avril 2019 (10:49 )
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-VI
console.log(s); // function toString()
</script>
Variables & Functions
-6/6-
jeudi, 4. avril 2019 (10:49 )