parse htmlelement from create convertir javascript jquery string

htmlelement - parse html javascript



Casting a cadena en JavaScript (8)

Además de todo lo anterior, uno debe tener en cuenta que, para un valor definido v :

  • String(v) llama a v.toString()
  • '''' + v llama a v.valueOf() antes de cualquier otro tipo de v.valueOf()

Entonces podríamos hacer algo como:

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

Probado en FF 34.0 y Nodo 0.10

Encontré tres formas de convertir una variable a String en JavaScript.
Busqué esas tres opciones en el código fuente de jQuery, y están todas en uso .
Me gustaría saber si hay alguna diferencia entre ellos:

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

DEMO

Todos producen la misma producción, pero ¿uno de ellos es mejor que los demás?
Yo diría que el + "" tiene la ventaja de que salva algunos personajes, pero eso no es una gran ventaja, ¿algo más?


De acuerdo con esta prueba JSPerf , difieren en velocidad. Pero a menos que vaya a usarlos en grandes cantidades, cualquiera de ellos debería funcionar bien.

Para completar: como ya se mencionó anteriormente, también puede usar el método .toString() .


Ejemplo del mundo real: Tengo una función de registro que se puede llamar con un número arbitrario de parámetros: log("foo is {} and bar is {}", param1, param2) . Si un indicador DEBUG se establece en true , los paréntesis se reemplazan por los parámetros dados y la cadena se pasa a console.log(msg) . Los parámetros pueden y serán cadenas, números y lo que sea que devuelvan llamadas JSON / AJAX, incluso null .

  • arguments[i].toString() no es una opción, debido a posibles valores null (ver la respuesta Connells Watkins)
  • JSLint se quejará de los arguments[i] + "" . Esto puede o no influir en una decisión sobre qué usar. Algunas personas se adhieren estrictamente a JSLint.
  • En algunos navegadores, concatenar cadenas vacías es un poco más rápido que usar la función de cadena o el constructor de cadenas (ver la prueba JSPerf en Sammys S. answer). En Opera 12 y Firefox 19, la concatenación de cadenas vacías es ridículamente más rápida (95% en Firefox 19) , o al menos eso dice JSPerf .

En esta página puede probar el rendimiento de cada método usted mismo :)

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

aquí, en todas las máquinas y navegadores, '' "" + str '' es el más rápido, (String) str es el más lento


Existen diferencias, pero probablemente no sean relevantes para su pregunta. Por ejemplo, el prototipo toString no existe en variables indefinidas, pero puede convertir indefinido en una cadena utilizando los otros dos métodos:

​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/


Se comportan de manera diferente cuando el value es null .

  • null.toString() arroja un error - No se puede llamar al método ''toString'' de null
  • String(null) devuelve - "nulo"
  • null + "" también devuelve - "nulo"

Un comportamiento muy similar ocurre si el value undefined está undefined (ver la respuesta de jbabey ).

Aparte de eso, hay una diferencia de rendimiento insignificante, que, a menos que los estés utilizando en bucles enormes, no vale la pena preocuparse.


Se comportan igual, pero toString también proporciona una forma de convertir un número de cadenas binarias, octales o hexadecimales:

Ejemplo:

var a = (50274).toString(16) // "c462" var b = (76).toString(8) // "114" var c = (7623).toString(36) // "5vr" var d = (100).toString(2) // "1100100"


si está bien con nulo, indefinido, NaN, 0 y falso, todo el lanzamiento a '''', entonces (s ? s+'''' : '''') es más rápido.

ver http://jsperf.com/cast-to-string/8

nota: hay diferencias significativas entre los navegadores en este momento.