JavaScript:
JavaScript is an interesting, quirky, aggravating language:
- It is a prototype-based language with objects that are associative arrays.
- Properties and methods can be added to an object at any time.
- It is a weakly typed language that has very context dependent conversions, ususally to objects.
- It has value types, reference types, and garbage collection.
- Everything is either a literal (value type) or object (reference type).
- Even functions and arrays are objects.
- It is single-threaded, using a function context stack and event queue to order processing.
- It's execution environment is usually a browser, but that is not always the case these days.
- When JavaScript code fails it often does so silently, making it difficult to debug.
- It is so malleable that it is easy to break working code.