2016-08-31 2 views
0

Les chaînes JS et DOM sont implémentées avec des chaînes UTF16. Que se passerait-il si un navigateur utilisait les chaînes UTF8 ou UTF32 en arrière-plan? Y a-t-il du code JS qui fonctionnerait différemment et donnerait des résultats différents?Est-ce qu'il y a des effets secondaires, que les chaînes JS et DOM sont stockées en UTF16?

+0

La comparaison de chaînes entraînera un effet faussement positif, certains symboles peuvent être affichés différemment de ce qui devrait être – Justinas

+0

par exemple? Pourriez-vous s'il vous plaît fournir un court exemple de code, qui fonctionnerait différemment? –

Répondre

2

Les opérations de chaînes de niveau inférieur telles que charCodeAt renverraient probablement des valeurs différentes, ce qui est dangereux pour les applications qui utilisent des chaînes telles que les tableaux d'octets (ce qui est un transfert relativement courant de la précédente). Et en général, les index de chaînes fonctionneraient différemment pour toutes les chaînes contenant des caractères multi-octets. Afin de ne pas casser le web, une implémentation aurait donc besoin de masquer son format d'arrière-plan comme UTF16 à l'interface JavaScript, ce qui serait plutôt inefficace. Il n'y a aucun avantage à gagner non plus.

+1

Par exemple, '" ".length' renvoie faussement' 2'. – dave