JavaScript in Depth
This is the best JavaScript tutorial in DEPTH, in English language, printed or online.
The JavaScript Basics section is suitable for beginners. It is concise. Pre-requisite is familarity with a scripting language such as Python, Ruby .
This tutorial is:
- Written in the most simple way you can understand.
- Standalone code examples you can run for every concept.
- Written in a cold style. No ninja no zen no joke. Every sentence counts.
- No framework, no library, no design patterns, no extraneous jargon, no fad.
- In depth. Based on JavaScript language specification for correctness.
- Covers JS2015 and updated every year with JavaScript new features.
- π means it's a new feature in JS2015 or later.
- π means it's a user-defined function not in JS.
- π means it's a old and bad feature of JavaScript of 1990s, you should not use.
Test your JavaScript knowledge:
- null vs undefined
- Array vs Array-Like Object
- Object vs Map
- for-in loop vs for-of loop
- Reflect.Set vs Property Assignment Syntax
- typeof, instanceof, constructor property
- Function Declaration vs Function Expression
- getPrototypeOf vs __proto__ Property
- Reflect.getPrototypeOf vs Object.getPrototypeOf
- window.isNaN vs Number.isNaN
- String() vs new String()

JavaScript in Depth
Basic Syntax
- Run JavaScript
- JavaScript Basics
- Comment
- Quote String
- Operators
- true and false
- Test Equality
- Branch Control
- Loop
- Array Basics
- Object Basics
Value Types
Variable
String
Property
- Property Overview
- Property Key
- Dot vs Bracket Notation
- Create/Delete Property
- Get/Set Property
- Property Existence
- Access Property
- List Properties
- for-in Loop
- Property Attributes
- Getter/Setter
- Property Descriptor
- Symbol
Object and Inheritance
- Object Overview
- Object Type
- Find Object's Type
- Prototype and Inheritance
- Prototype Chain
- in Prototype Chain?
- Get/Set Parent
- Show Parent Chain π
- Create Object
- Object Literal Expr
- Create Object + Parent
- Prevent Adding Property
- Clone Object π
- Test Object Equality π
- Add Method to Prototype
Array
Function
- Define Function
- Arrow Function π
- Function Params
- arguments Object
- Rest Params π
- Arg Default Value π
- Arg Destructure π
- f Declaration vs Expr
- Closure
- f call apply bind
- Functional Programing
- Pipe Functions π
Constructor/Class
- this Binding
- What is Constructor
- Property Key "prototype"
- Operator βnewβ
- Operator βinstanceofβ
- Property Key "constructor"
- Class π
- Keyword βextendsβ π
- Keyword βsuperβ π
Iterable π
- Interface
- Iterable
- Iterator
- Iterator Prototype
- for-of Loop
- Spread Operator
- Generator
- Generator Function
Misc
- Regular Expression
- Date
- Set π
- Map π
- Import π
- Export π
- Promise π
- Proxy π
- Convert String/Number
- Try Catch Throw Finally
- JS2015 Features
- JS2016 to JS2020
- How to Convert to JS2015
- Style Guide
- Semicolon Rules
- Exclamation Before Function
- How to Determine Strict Mode?
- x.y.z Associativity
- Timing JS Code
- Allowed Characters in Identifier
- Source Code Encoding