JavaScript
TODO.
There’s also Knowledge/Engineering/Languages/TypeScript.
# Rest Operator
TODO.
# Generators
TODO.
# Object Oriented Programming
# Classes
TODO.
# Inheritance
TODO.
# Prototypes
TODO.
# Modules
First, a brief timeline of JavaScript’s weird module system development:
- 1995: JavaScript was born, but there was no concept of modules which made building complex applications extremely hard. Without modules, a single huge javascript file might be shipped to the user.
- 2009ish: people introduced a module system to take advantage of the code splitting optimisation technique where modules are lazily loaded.
- 2009ish: Node.js was developed and introduced the CommonJS module standard, but this was only usable in server-side environments.
- 2011:
Browserify made it possible to use
require
in frontend projects.
- 2011:
Browserify made it possible to use
- 2009ish: the AMD module standard was popularised.
- 2015: ES2015 standardised the
ES Modules
import
/export
syntax.
# CommonJS
TODO.
# Dynamic Import
import(path)
# Asynchronous Programming
# Event Loop
TODO.
.. multiplexing tasks over a single thread, which means there is no need for mutexes, semaphores and other concurrency helpers.
an event-looped model is different from a multithreaded model.
When you do use real multithreading in JavaScript (through Web Workers in a browser environment or forking to create child processes in a server environment), you rarely use shared memory, meaning there’s no need to coordinate concurrent access to shared resources.
# Web Workers
TODO. Web workers are background threads. They can