Sujet : Re: Indexation des tableaux en js
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.lang.javascriptDate : 12. Dec 2024, 14:42:10
Autres entêtes
Organisation : There's no cabale
Message-ID : <vjep7j$niu$1@cabale.usenet-fr.net>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
Bonjour Thuerry,
Le 11/12/2024 20:33, Thierry Loiseau a écrit :
Olivier Miakinen <om+news@miakinen.net> wrote:
Ce serait bien si tu laissais la date de l'article auquel tu réponds, surtout
quand cela fait plus d'un mois et que l'article en question a pu disparaitre
des serveurs avec une rétention compatible avec des « news ».
Bon, je l'ai retrouvé chez un archiveur :
<
http://al.howardknight.net/?ID=173161107300>
En réalité, tout index, qu'il soit fourni sous forme de nombre ou sous toute
autre forme, par exemple une chaine de caractères :
? est transformé en nombre s'il peut représenter un nombre entre 0 et 2^32-2 ;
? est transformé en chaine de caractères dans tous les autres cas.
La preuve :
a[0] = 0
a['0'] = '0'
a[4294967294] = 4294967294
a['4294967294'] = '4294967294'
a[true] = 1
a['true'] = 'true'
a[null] = 0
a['null'] = 'null'
Rien que la dernière écriture est fausse :)
Qu'est-ce que cela veut dire, qu'une écriture est « fausse » ?
Elle est syntaxiquement correcte, et à priori parfaitement comprise par tous
les interpréteurs JavaScript.
Bravo. Mais je ne comprend pas du tout depuis le début du fil de
discussion où tu veux en venir.
Mes essais montraient les choses suivantes.
Premièrement, que peu importe si l'on met comme index un entier, un mot-clé
ou une chaîne de caractères, il est interprété puis devient une chaîne de
caractères (par exemple 1/0 devient la chaine de caractères 'Infinity', ou
null la chaine de caractères 'null').
Deuxièmement, que si cette chaîne de caractères représente un nombre entre
'0' et '4294967294', alors quand on relit le tableau cela se comporte comme
si on avait vraiment un tableau indexé par un entier entre 0 et 4294967294,
alors que pour tout le reste (nombres ou pas) cela se comporte comme un
tableau associatif.
Troisièmement, que dans ce tableau associatif, les chaines qui représentent
un mot-clé tel que 'null' ou 'Infinity' sont affichées comme s'il s'agissait
bien de la valeur null ou Infinity plutôt que comme la chaine de caractères
'null' ou 'Infinity'.
Une question : as tu déjà développé en JavaScript ???
Voilà une question bien curieuse et tendancieuse, qui sous-entendrait que si
je n'ai pas une connaissance pratique d'un langage je serais incapable d'en
avoir une connaissance théorique, par exemple en ayant passé beaucoup de temps
à en lire la norme.
Pourtant, quelqu'un qui a « seulement » développé en JavaScript sans en avoir
jamais lu la norme risque d'en avoir une connaissance beaucoup moins développée
que le contraire, et du coup tomber par hasard sur un comportement qui lui sera
incompréhensible.
Alors il est vrai que je n'ai pas lu les dernières versions de la norme
ECMAScript, sachant qu'il y en a une par an depuis 2015. Mais j'en ai sans
doute plus lu que la plupart de ceux qui développent tous les jours en
JavaScript.
Amitiés,
Tout pareil,
-- Olivier Miakinen