2010-06-18 7 views
5

veo código como este en toda la web¿Por qué veo que las matrices de JavaScript se crean con string.split()?

var days= "Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "); 

¿Por qué los que en lugar de

var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; 

No creo que la pereza o la ignorancia tiene nada que ver con ello. Esto está fuera de jQuery 1.4.2

props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" ") 

Lo hacen por todas partes.

+4

Laziness ...? :-) –

+0

¿Holgazanería? Definitivamente no es bueno para la velocidad, y personalmente no creo que mejore la legibilidad. – MvanGeest

+1

Eso es literalmente * demasiado inteligente *. –

Respuesta

11

Creo que es porque no tiene que citar y separar cada cadena de la matriz. Del mismo modo, en Perl, muchas personas usan qw(a b c d e f g) en lugar de ('a', 'b', 'c', 'd', 'e', 'f', 'g'). Así que el beneficio es doble:

  1. Es más rápido y fácil de escribir y modificar (obviamente puede debatirse).
  2. Es más pequeño en bits, por lo que ahorra un poco de ancho de banda.

ver el tamaño de bits:

var days= "Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "); 
// 81 characters 

vs

var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; 
// 91 characters 
+0

+1, me ganaste con eso :-) –

+0

En realidad, solo sería 3 bytes más pequeño (ya que usarías un minificador, lo que significa que no hay espacios en blanco innecesarios), pero seguro, todavía queda un poco de ancho de banda guardado ... – Blixt

+0

I gusta. En mis pruebas, el modo de división de cuerdas lleva aproximadamente 1 y medio veces más tiempo de ejecución, pero en realidad solo se puede medir a lo largo de miles de iteraciones. IMO no es más fácil de leer, pero reduce el tamaño del archivo y es más rápido de escribir. – Matthew

0

También puede tener sentido si las cadenas iniciales tienen citas o comillas dobles en el texto.

0

"81 caracteres y 91 caracteres" < < Bonita observación, pero agrega de nuevo poco tiempo de procesamiento para convertir String en Matriz y qué pasa si a veces hay que agregar algo que tenga 2 palabras.

A que les guste este estilo de codificación.

IDK

0

Usted podría tener 20 cuerdas de los nombres de los días de semana en 20 idiomas, y el uso de una sola división para devolver la matriz correcta para el usuario.

Cuestiones relacionadas