Javascript has dynamic typing, simple formal parameters (including varargs), and an inheritance mechanism known as prototypes. There are several languages that aim to be more expressive & compile into Javascript.
Coffeescript: It uses Python-style indentation. Its class feature is the main reason to consider it. It has some other nice features like: destructured assignment as in [x, y] = 1 2, existential operator as in x ?= 1, embedded JS as in `var x = 3;`, a switch statement which supports strings, string interpolation, multi-line strings, function binding (aka fat arrow =>) whereby this's value can be preserved in the call. Coffeescript is supported by Rails 3's asset pipeline.
Dart: Some notable features:
- types: optional static typing as in var i; vs. int i;, typedefs (an evolving feature), constants as in const double PI = 3.14159;
 - operators: divide returning an integer result as in 4 ~/ 3
 - strings: multi-line, concatenation as in s1 s2
 - collections: Map literals as in { 'color': 'red', 'n': 13 } -- too bad the keys must be quote-delimited
 - functions: anonymous, syntactic sugar for single-expression methods/functions as in sum = (a, b) => a + b;, closures, optional positional & named formal parameters
 - inheritance: library-level instance variable visibility via _ identifier prefix as in _privateI, named constructors -- more readable than overloading, factory constructors, constructor initializers as in Person(this.name), getters/setters, abstract methods/classes, implicit interfaces (if you know Java, there is an implements keyword but not an interface keyword), operator overloading, generics as in Map<String, Integer>
 - modularity: libraries (a refinement of Java packages)
 - comments: documentation comments (as opposed to a convention imposed by a document generator)
 - multiprogramming: isolates (instead of threads)
 
There are others which I won't cover here.