|
// See comments below. |
|
|
|
// This code sample and justification brought to you by |
|
// Isaac Z. Schlueter, aka isaacs |
|
|
|
// standard style |
|
var a = "ape", |
|
b = "bat", |
|
c = "cat", |
|
d = "dog", |
|
e = "elf", |
|
f = "fly", |
|
g = "gnu", |
|
h = "hat", |
|
i = "ibu"; |
|
|
|
// comma-first style |
|
var a = "ape" |
|
, b = "bat" |
|
, c = "cat" |
|
, d = "dog" |
|
, e = "elf" |
|
, f = "fly" |
|
, g = "gnu" |
|
, h = "hat" |
|
, i = "ibu" |
|
; |
|
|
|
// error in standard style |
|
var a = "ape", |
|
b = "bat", |
|
c = "cat", |
|
d = "dog" |
|
e = "elf", |
|
f = "fly", |
|
g = "gnu", |
|
h = "hat", |
|
i = "ibu"; |
|
|
|
// error in comma-first style |
|
var a = "ape" |
|
, b = "bat" |
|
, c = "cat" |
|
, d = "dog" |
|
e = "elf" |
|
, f = "fly" |
|
, g = "gnu" |
|
, h = "hat" |
|
, i = "ibu" |
|
; |
|
|
|
// Objects: |
|
|
|
// JSON.stringify style |
|
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" ] |
|
]; |
|
|
|
|
|
// comma-first |
|
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" ] |
|
]; |
|
|
|
// errors in objects: |
|
|
|
// JSON.stringify style |
|
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" ] |
|
]; |
|
|
|
|
|
// comma-first |
|
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" ] |
|
]; |
|
|
|
// Addendum: effects on the return statement. |
|
// It does not break. |
|
|
|
return [ 1 |
|
, 2 |
|
, 3 |
|
] // returns [1,2,3] |
|
|
|
return { a : "ape" |
|
, b : "bat" |
|
} // returns {a:"ape",b:"bat"} |
|
|
|
// even just separating two values by commas is fine, |
|
// though a bit silly |
|
return 1 |
|
, 2 |
|
, 3 |
|
, 4 // returns the last value, 4 |
|
|
|
// this, however is wrong: |
|
return |
|
1 |
|
, 2 // returns undefined, because of semicolon-insertion. |
|
|
|
// so is this. otb == fail. |
|
return |
|
{ a : "ape" |
|
, b : "bat" |
|
} // returns undefined, |
|
// then creates a block with two named statements. |
|
|
|
// this is ok: |
|
return ( 1 |
|
, 2 |
|
) // returns 2 |
|
|
|
// so is this: |
|
return ( |
|
{ a : "ape" |
|
, b : "bat" |
|
} |
|
) // returns {a:"ape",b:"bat"} |
|
|
|
|
|
// Addendum 2: A function call |
|
|
|
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 |
|
) |
|
|
|
// Addendum 3: More realistic error in standard style: |
|
|
|
// leaks FIVE globals! |
|
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: Can't call method 'forEach' of undefined. |
|
// not passing in undefined as an argument!?? |
|
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() } ]); |