Skip to content

Instantly share code, notes, and snippets.

@gonzaloruizdevilla
Forked from isaacs/comma-first-var.js
Created April 16, 2012 10:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gonzaloruizdevilla/2397530 to your computer and use it in GitHub Desktop.
Save gonzaloruizdevilla/2397530 to your computer and use it in GitHub Desktop.
Una mejor convención para codificar listas y literales de objetos en JavaScript
// Ver comentarios más abajo.
// Este ejemplo está basado en el original de
// Isaac Z. Schlueter, aka isaacs
// estilo estándar
var a = "ape",
b = "bat",
c = "cat",
d = "dog",
e = "elf",
f = "fly",
g = "gnu",
h = "hat",
i = "ibu";
// estilo con coma primero
var a = "ape"
, b = "bat"
, c = "cat"
, d = "dog"
, e = "elf"
, f = "fly"
, g = "gnu"
, h = "hat"
, i = "ibu"
;
// error en el estilo estándar
var a = "ape",
b = "bat",
c = "cat",
d = "dog"
e = "elf",
f = "fly",
g = "gnu",
h = "hat",
i = "ibu";
// error en el estilo con coma primero
var a = "ape"
, b = "bat"
, c = "cat"
, d = "dog"
e = "elf"
, f = "fly"
, g = "gnu"
, h = "hat"
, i = "ibu"
;
// Objectos:
// estilo JSON.stringify
var o = {
a : "ape",
b : "bat",
c : "cat",
d : "dog",
e : "elf",
f : "fly",
g : "gnu",
h : "hat",
i : "ibu"
},
a = [
[ "ape", "bat" ],
[ "cat", "dog" ],
[ "elf", "fly" ],
[ "gnu", "hat" ],
[ "ibu" ]
];
// coma primero
var o =
{ a : "ape"
, b : "bat"
, c : "cat"
, d : "dog"
, e : "elf"
, f : "fly"
, g : "gnu"
, h : "hat"
, i : "ibu"
}
, a =
[ [ "ape", "bat" ]
, [ "cat", "dog" ]
, [ "elf", "fly" ]
, [ "gnu", "hat" ]
, [ "ibu" ]
];
// errores en objectos:
// estilo JSON.stringify
var o = {
a : "ape",
b : "bat",
c : "cat",
d : "dog"
e : "elf",
f : "fly",
g : "gnu",
h : "hat",
i : "ibu"
},
a = [
[ "ape", "bat" ],
[ "cat", "dog" ],
[ "elf", "fly" ]
[ "gnu", "hat" ],
[ "ibu" ]
];
// error en estilo con coma primero
var o =
{ a : "ape"
, b : "bat"
, c : "cat"
, d : "dog"
e : "elf"
, f : "fly"
, g : "gnu"
, h : "hat"
, i : "ibu"
}
, a =
[ [ "ape", "bat" ]
, [ "cat", "dog" ]
, [ "elf", "fly" ]
[ "gnu", "hat" ]
, [ "ibu" ]
];
// Apéndice: efecto en la sentencia 'return'.
// No rompe nada.
return [ 1
, 2
, 3
] // devuelve[1,2,3]
return { a : "ape"
, b : "bat"
} // devuelve{a:"ape",b:"bat"}
// incluso separando dos valores por comas es correcto,
// aunque no aporta nada
return 1
, 2
, 3
, 4 // devuelve el último valor, 4
// sin embargo, esto está mal:
return
1
, 2 // devuelve undefined, debido a la inserción automática de punto y coma
// esto también falla.
return
{ a : "ape"
, b : "bat"
} // returns undefined,
// then creates a block with two named statements.
// esto es correcto:
return ( 1
, 2
) // devuelve 2
// y esto también:
return (
{ a : "ape"
, b : "bat"
}
) // devuelve {a:"ape",b:"bat"}
// Apéndice 2: Llamadas a funciones
doSomething( aPrettyLongVariableName
, "A string, which has some useful information"
, "If you put these all together, it'd be too long"
, { a: "is for antelope", b: "is for bat" }
, 42
)
// Apéndice 3: Un error más realista en el estilo estándar:
// ¡esto crea CINCO variables globales!
var a = "ape eat banana",
b = "bat, allowed to fly",
c = "cat toy",
d = "dog chasing the mailman,"
e = "elf lord",
f = "fly through the air",
g = "gnu is not unix",
h = "hat goes on your head",
i = "ibu isn't a cow";
// Error: No puede invocar el método 'forEach' de undefined.
// ¿no informa undefined en un argumento!??
mergeLists([ apple, [ penelope, granger ] ],
[ fun ],
[ 1, 2, 3, 4, 5, 6, 7, 8 ]
[ "mary's store has many pies, and cookies, and eggs," ]
[ function() { doSomething() } ]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment