As a beginner you should be proficient in the following:
-
Grammar and Types
- Basic syntax & comments
- Declarations
- Variable scope
- Variable hoisting
- Data Structures and types
- Literals
-
Control flow and error handling
- if...else
- switch
- try/catch/throw
- Error objects
- Promises
-
Expressions and operators
- Assignment & Comparisons
- Arithmetic operators
- Bitwise & logical operators
- Conditional (ternary) operator
-
Loops and iteration
- for
- while
- do...while
- break/continue
- for..in
- for..of
-
Functions
- Defining functions
- Calling functions
- Function scope
- Closures
- Arguments & parameters
- Arrow functions
-
Working with objects
- Objects and properties
- Creating objects
- Defining methods
- Getter and setter
As an intermediate you should be proficient in the following:
-
Numbers and dates
- Number literals
- Number object
- Math object
- Date object
-
Text formatting
- String literals
- String object
- Template literals
- Internationalization
- Regular Expressions
-
Indexed collections
- Arrays
- Typed arrays
-
Keyed collections
- Map
- WeakMap
- Set
- WeakSet
-
Details of the object model
- Prototype-based OOP
- Creating object hierarchies
- Inheritance
-
Iterators and generators
- Iterators
- Iterables
- Generators
-
Meta programming
- Proxy
- Handlers and traps
- Revocable Proxy
- Reflect
Other areas an intermediate needs to know include:
- Introducing JavaScript objects
- Client-side web APIs
- A re-introduction to JavaScript
- JavaScript data structures
- Equality comparisons and sameness
- Closures
As an expert you should be proficient in the following:
- Inheritance and the prototype chain
- Strict mode
- JavaScript typed arrays
- SIMD types
- Memory Management
- Concurrency model and Event Loop