JavaScript
The Good Parts
The Awful
no linker = global vars are required
and global vars are very, very bad

there is block syntax, but not block scope

semi-colon insertion

most reserved words are not used
The Awful
16-bit strings

typeof

parseInt

+

binary floating point
The Awful
NaN

Phony Arrays

Falsy Values

hasOwnProperty

Object
The Bad
== and !=

with

eval

Function

setTimeout and setInterval (string arg version)
The Bad
continue

switch fall throughs

blockless statements

++ and --

bitwise operators
The Bad
function: declaration vs. expression

typed wrappers

new

void

/* block comments */
The Good
functions

loose typing

dynamic objects

literals

number
The Good
function objectness

function invocation patterns
   method, function, constructor, apply

function arguments

function return
The Good
scope

closure

callbacks

module

cascade
The Good
curry

memoization (cache)

inheritance
   pseudoclassical
   object specifiers
   prototypal
   functional
   parts

JavaScript: The Good Parts