Eloquent JavaScript

the second edition is free online in advance of its print publication