JavaScript is a dynamic programming language originally designed for web browsers but now used in many non-browser environments. It was misunderstood early on due to its name association with Java, inconsistent implementations across browsers, and loose typing. Key features include load-and-go delivery, loose typing where values can be treated as different types, objects used as general containers, prototypal inheritance, and functions as first-class objects. All values in JavaScript are either primitive values (strings, numbers, booleans, null, undefined) or objects.