Trasmissione alla stringa in JavaScript



3 Answers

Ci sono differenze, ma probabilmente non sono rilevanti per la tua domanda. Ad esempio, il prototipo toString non esiste su variabili non definite, ma è possibile eseguire il cast non definito in una stringa utilizzando gli altri due metodi:

​var foo;

​var myString1 = String(foo); // "undefined" as a string

var myString2 = foo + ''; // "undefined" as a string

var myString3 = foo.toString(); // throws an exception

http://jsfiddle.net/f8YwA/

Question

Ho trovato tre modi per trasmettere una variabile a String in JavaScript.
Ho cercato queste tre opzioni nel codice sorgente di jQuery e sono tutte in uso .
Vorrei sapere se ci sono delle differenze tra loro:

value.toString()
String(value)
value + ""

DEMO

Tutti producono lo stesso risultato, ma uno di questi è migliore degli altri?
Direi che il + "" ha un vantaggio che salva alcuni personaggi, ma questo non è un grande vantaggio, nient'altro?




Oltre a quanto sopra, si dovrebbe notare che, per un valore definito v :

  • String(v) chiama v.toString()
  • '' + v chiama v.valueOf() prima di qualsiasi altro tipo di cast

Quindi potremmo fare qualcosa come:

var mixin = {
  valueOf:  function () { return false },
  toString: function () { return 'true' }
};
mixin === false;  // false
mixin == false;    // true
'' + mixin;       // "false"
String(mixin)     // "true"

Testato in FF 34.0 e Nodo 0.10




Su questa pagina puoi testare tu stesso le prestazioni di ciascun metodo :)

http://jsperf.com/cast-to-string/2

qui, su tutte le macchine e i browser, " " "+ str 'è il più veloce, Str (string) è il più lento




Secondo questo test di JSPerf , differiscono nella velocità. Ma a meno che non li userai in grandi quantità, ognuno di essi dovrebbe funzionare bene.

Per completezza: come già detto, puoi anche usare il metodo .toString() .




Related