philippewang.info

Javascript et compagnie...

Javascript, c'est un langage que je n'aime pas trop dans son état actuel. Les navigateurs ne sont pas foutus d'avoir les mêmes comportements pour un programme donné, et même pour les fonctions de base.

Par exemple, dans Safari 3, la méthode sort de la classe Array ne se comporte pas du tout de la même façon que la méthode sort de la classe Array chez Firefox 2 (à part le fait que la méthode trie correctement). Chez Firefox 2, si on trie un tableau déjà trié, on n'obtient pas obligatoirement le même tableau. En effet, si un tableau comporte deux entrées identiques d'après la fonction de comparaison, alors le fait de retrier un tableau le change (obligatoirement d'après ce que j'ai pu constater). C'est-à-dire que si A[i] et A[i+1] ont la même valeur d'après la fonction de comparaison, alors lors du trie, on peut être sûr qu'ils vont changer de place. C'est exactement le comportement contraire avec Safari 3.

Une autre chose de bizare est que la méthode sort de la classe Array de Safari 3 préfère les fonctions anonymes plutôt que les fonctions nommées, d'après ce que j'ai pu constater... (La version avec une fonction nommée fonctionnait bien avec Firefox 2, mais pas du tout avec Safari 3. L'utilisation d'une fonction anonyme a résolu le problème...)

J'imagine qu'Apple (ou bien les développeurs de KHTML) se sont dit que ça ne servait à rien de perdre du temps à bouger des éléments quand rien ne le demande explicitement... En tout cas c'est sûr que ça joue sur les performances... -- Je n'ai aucune idée de quand datent les choix d'implantation. Je n'ai pas lu les spécifications ECMA.

2008-04-10

:: philippewang.info ::

:: design & photos by Philippe Wang :: XHTML 1.1 :: CSS 2 :: RSS 2 :: stats :: contact ::
:: Best viewed with Safari or Opera or Firefox or Links :: No SPAM Please ::
 
This page was generated on Thu Mar 20 19:41:09 GMT 2014 by BashGXD