2016-01-08 3 views
5

Sto ancora imparando JavaScript e mi sto esercitando con l'input da una tastiera. Ho appena saputo di String.fromCodePoint e sembra (per me) di raccogliere tutto ciò che fa String.fromCharCode.È possibile utilizzare String.fromCodePoint proprio come String.fromCharCode

È String.fromCodePoint supportato ampiamente dai browser e dai dispositivi e, in caso affermativo, rende String.fromCharCode obsoleto, oppure esiste un motivo per cui a volte si utilizza String.fromCharCode?

+2

un'occhiata a per la compatibilità del browser http://kangax.github.io/compat-table/es6/#String.fromCodePoint – Apolo

risposta

4

fromCharCode non è obsoleto ancora, ma lo sarebbe se sarebbe supportato da tutti i browser. Tuttavia fromCharCode è circa twice as fast come fromCodePoint

  • String.fromCodePoint() Non supportato da Internet Explorer e Safari

  • String.fromCharCode() supportati dal per sempre, il doppio più veloce

  • La differenza:

    Sebbene i valori Unicode più comuni possano essere rappresentati con un numero di 16 bit (come previsto all'inizio durante la standardizzazione JavaScript) e fromCharCode() possono essere utilizzati per restituire un singolo carattere per i valori più comuni (cioè valori UCS-2 che sono il sottoinsieme di UTF-16 con i caratteri più comuni), al fine di gestire TUTTI i valori Unicode legali (fino a 21 bit), daCharCode() da solo è inadeguato. Poiché i caratteri del punto di codice superiore utilizzano due numeri "surrogati" (valore inferiore) per formare un singolo carattere, è possibile utilizzare String.fromCodePoint() (parte della bozza ES6) per restituire tale coppia e quindi rappresentare adeguatamente questi caratteri con valori più elevati .

+0

Non mi rendevo conto fromCharCode sarebbe che molto più veloce ... grazie per aver condiviso il link del test di velocità. Per ora rimarrò con fromCharCode solo per l'input di tastiera di base. – freginold

4

String.fromCodePoint non è ampiamente supportato, in effetti non è supportato affatto in Internet Explorer e Safari, e solo in Chrome 41 e versioni successive, e Firefox 29 e versioni successive.

Ciò non significa che sia obsoleto, significa che è un nuovo metodo, definito solo in ES2015.
Significa anche che il supporto del browser migliorerà nel tempo, mentre i browser implementano tutte le nuove funzionalità della sesta edizione di ECMAScript.

Per ora, non è molto adatto per l'uso di produzione se è necessario supportare tutti i browser correnti, ma è disponibile un polyfill su MDN se è davvero necessario avere questo metodo disponibile in tutti i browser.

3

String.fromCharCode è supportato su tutti i browser:
enter image description here

String.fromCodePoint ha limitato il supporto del browser:
enter image description here