Characteristics and use.
WHAT IT IS
A dynamically and weakly typed, interpreted, multi-paradigm language.
WHY IT MATTERS
It is the only language browsers execute natively.
WHAT THAT MEANS
Anything running in a browser is JavaScript, or compiles to it.
WHERE ELSE IT RUNS
On servers In desktop applications On mobile, through various frameworks In embedded contexts
WHAT DISTINGUISHES IT
Functions as values, passed and returned freely Prototype-based objects Single-threaded execution with an event loop Asynchronous programming as a central concern
WHAT ITS REPUTATION SUFFERED FROM
Early design decisions producing surprising behaviour.
WHAT THOSE INCLUDE
Automatic type conversion in comparisons Two distinct values representing absence Scoping behaviour in the original variable declaration
WHAT ADDRESSED MOST OF IT
Modern language versions, adding block scoping, modules, classes and clearer asynchronous syntax.
WHAT REMAINS
Weak typing, which requires discipline.
WHAT TO ADOPT
Strict comparison, modern declarations, and a type system for anything substantial.