Skip to content

JavaScript

November 12, 2023
December 11, 2014

JavaScript was conceived by Brendan Eich, then employee of Netscape, in ten days time. The name "JavaScript" was chosen intensionally with reference Java to give the impression of "write once, run everywhere".

Sun (now Oracle) owns the trademark of the name "Java", hence "JavaScript". So the standard for JavaScript is ECMA-262 (or ECMAScript), after the standard body ECMA.

Harmony stands for the ES5+ feature set. Some of them will be in ES6, some of them will be in the future version of ES.

The Complete JavaScript Handbook

ECMAScript - Wikiwand
Brendan Eich » Blog Archive » A Brief History of JavaScript
A Short History of JavaScript - Web Education Community Group
DailyJS: History of JavaScript
JavaScript: how it all began
The Origin of JavaScript - DevChat.TV
JavaScript: How It's Made - YouTube
The Weird History of JavaScript - YouTube
A JavaScript glossary: ECMAScript, TC39, etc.
ES5, ES6, ES2016, ES.Next: What's going on with JavaScript versioning?
OpenJS Foundation

State of the Art JavaScript in 2016 — JavaScript and Opinions — Medium

stdlib - A standard library for JavaScript and Node.js

Spec

Standard ECMA-262
ECMAScript® Language Specification latest

Annotated ES5
ECMAScript Language Specification - ECMA-262 Edition 5.1
ECMAScript 2015 Language Specification – ECMA-262 6th Edition

Blog posts tagged “Understanding ECMAScript” · V8 ❗!important

Learn

Learn JavaScript: — JavaScript Scene — Medium
Explaining to non-programmers what JavaScript is
JavaScript for Cats
23 Free Websites to Learn JavaScript in 2022

Introduction to JavaScript
JavaScript.com
JavaScript Garden
JS: The Right Way
The Modern JavaScript Tutorial

JavaScript | MDN
A re-introduction to JavaScript (JS tutorial) - JavaScript | MDN
JavaScript basics - Learn web development | MDN
JavaScript reference - JavaScript | MDN

Top Repos to Boost Your JavaScript Knowledge - DEV

Douglas Crockford's Javascript
JavaScript Patterns
JS: The Right Way
How To Node - NodeJS does a great job in explaining concepts
A Map to Learn to Code and Become a Software Engineer | Free Code Camp
The 7 Most-Used JavaScript Topics You Should Know – codeburst

sorrycc/awesome-javascript: 🐢 A collection of awesome browser-side JavaScript libraries, resources and shiny things.
Leveling Up Your JavaScript - Telerik Developer Network

JavaScript conferences and events | Lanyrd
Life of JavaScript
Learn JavaScript - Full Course for Beginners - YouTube

Course

JavaScript | Codecademy
JavaScript Fundamentals | Udemy
JavaScript 30 — Build 30 things with vanilla JS in 30 days with 30 tutorials ❗!important, by Wes Bos

Video

Video: An overview of ECMAScript 6
Four talks on ECMAS cript 6/ECMAScript.next
RSConf. Dr. Axel Rauschmayer. Using ECMAScript 6 today. Part I - YouTube
RSConf. Dr. Axel Rauschmayer. Using ECMAScript 6 today. Part II - YouTube

The Better Parts. Douglas Crockford. JS Fest 2018 - YouTube

How to Write an Open Source JavaScript Library - Video Tutorial Series @eggheadio

bolshchikov/js-must-watch
Javascript Planet - YouTube
NodeJS Fan - YouTube

Books

Learn JavaScript: The best methods and resources according to 25 JavaScript experts | PSDtoWP.net

Learn Javascript - GitBook
Speaking JavaScript Axel Rauschmayer, ES5
JavaScript for impatient programmers (ES2022 edition) Axel Rauschmayer
Eloquent JavaScript Marijn Haverbeke, Node.js and Browser
The JavaScript Handbook Flavio Copes, ES6
Vanilla JS Guides
Human JavaScript &yet + React.js

getify/You-Dont-Know-JS learn and deeply understand all of JavaScript
You Might Not Know JS: Insights From the JavaScript Bible
Kyle Simpson proved I STILL don't know JavaScript (arrays) - DEV Community 👩‍💻👨‍💻

Exploring ES6 Axel Rauschmayer, ES6
Read Setting up ES6 | Leanpub Axel Rauschmayer, ES6
Understanding ECMAScript 6 | Leanpub Nicholas C. Zakas
JavaScript Allongé, The "Six" Edition | Leanpub Reg “raganwald” Braithwaite, FP, OOP
JavaScript Spessore | Leanpub Reg “raganwald” Braithwaite, succession to JavaScript Allongé
Learning JavaScript Design Patterns Addy Osmani
Table of Contents - Mixu's Node book
Programming JavaScript Applications

JS Jottings JavaScript and its quirks, ES5, ES6

JSbooks - free javascript books
Felix's Node.js Guide

Kyle Robinson Young - YouTube
shama/letswritecode: code examples for Let's Write Code

Language

2023 JavaScript Predictions: What to Expect - YouTube

JS Essentials: The JavaScript Engine – codeburst
Go Make Things

Expressions versus statements in JavaScript
Variables vs. Properties in JavaScript – JavaScript, JavaScript…
Function Declarations vs. Function Expressions – JavaScript, JavaScript…
DailyJS: JS101

leonardomso/33-js-concepts: 📜 33 concepts every JavaScript developer should know.

thechangelog/books: Our list of recommended books compiled from show notes, members, and fans of the show!

Types

12 JavaScript quirks
JavaScript’s type system
Categorizing values in JavaScript
JavaScript: fixing categorization
Coercing objects to primitives

Objects are like map, but see The pitfalls of using objects as maps in JavaScript and Using objects as dictionaries is surprisingly tricky.
Chapter 17. Objects and Inheritance: The dict Pattern

JS properties: enumerable, writable & configurable - arqex

19. Maps and Sets
Converting ES6 Maps to and from JSON

A look at ES6 Sets - Barbarian Meets Coding

10 Interview Questions Every JavaScript Developer Should Know — JavaScript Scene — Medium

An Introduction to Weak Value Maps – Doctor Evidence Development

Style

JavaScript Standard Style
Video: JavaScript coding tips
rwaldron/idiomatic.js
Use Linters For Safer Coding With Less Javascript Errors

Type Checking JavaScript Files · TypeScript

EditorConfig
Lint Like It’s 2015 — Medium

Are Semicolons Necessary in JavaScript? - YouTube

Brace styles and JavaScript

Airbnb JavaScript Style Guide

ESLint

ESLint - Pluggable JavaScript linter
List of available rules - ESLint
Documentation - ESLint: disabling rule for temporarily

plugin vs sharable config?

dustinspecker/awesome-eslint: A list of awesome ESLint plugins, configs, etc.

es-analysis/plato: JavaScript source code visualization, static analysis, and complexity tool

Tools for Consistent JavaScript Code Style | by Joel Thoms | Bits and Pieces ESLint + Prettier + Husky

ESLint 101
babel/babel-eslint Babel parser, needed if you use ES6 syntax (e.g. rest/spread)

Disabling rules

Configuring ESLint - ESLint - Pluggable JavaScript linter

Entire file:

/* eslint-disable no-alert */

alert("foo");

Single line:

alert("foo"); // eslint-disable-line no-alert

// eslint-disable-next-line no-alert
alert("foo");

Block:

/* eslint-disable */

alert("foo");

/* eslint-enable */

configs

npm "eslintplugin"
JavaScript Standard Style uses ESLint internally, saves you from the hassle of managing configurations and arguments over style
yannickcr/eslint-plugin-react
Fine-Tuning AirBnB's ESLint Config
nodesecurity/eslint-plugin-security
sindresorhus/eslint-formatter-pretty: Pretty ESLint formatter

prettier

prettier is a formatter

Leveraging Prettier and Eslint in Sublime Text 3 for cleaner code

Sublime Text Plugin · Issue #17 · prettier/prettier Use eslint-plugin-prettier and eslint --fix instead of prettier CLI?
Integrating with ESLint · Prettier

Array

Apply and arrays: three tricks
Understanding JavaScript Arrays – JavaScript, JavaScript…

// delete n elements at index i, insert args at that position
[].splice(i, n, [, arg1[, arg2[, ...]]]);

// convert arguments to true Array
[].slice.call(arguments);

// bind() returns a new function
f2 = f1.bind(thisArg[, arg1[, arg2[, ...]]]);
f1.call(thisArg[, arg1[, arg2[, ...]]]);

// call Array function on array-like object
var meta = document.getElementsByTagName('meta');
var filtered = [].filter.call(meta, function (val) {
    if(val.name === 'description') return val;
});

ArrayBuffer

const sharedBuffer = new SharedArrayBuffer(
  Int32Array.BYTES_PER_ELEMENT * numberOfElements,
);
const arr = new Int32Array(sharedBuffer);

Destructuring

Destructuring and parameter handling in ECMAScript 6
ES6 Destructuring: The Complete Guide – codeburst
Javascript's three dots ( ... ): Spread vs rest operators ― Scotch.io

Scope

JavaScript variable scoping and its pitfalls
Variable declarations: three rules you can break

Closure/IFFE

Self Invoked Anonymous Function? Sounds iffy…
What is an IIFE in Javascript? - Prashant Ram - Medium

13. Callable entities in ECMAScript 6: Avoid IIFEs in ES6
Essential JavaScript: Mastering Immediately-invoked Function Expressions

How do JavaScript closures work under the hood [Dmitry Frank]
Understanding JavaScript Closures – JavaScript, JavaScript…
Let’s Learn JavaScript Closures — Free Code Camp
How do JavaScript closures work? - Stack Overflow

Use JavaScript closures efficiently
A simple guide to help you understand closures in JavaScript

Callback

Callback Hell
How Callbacks Work - macwright.org
Understanding callback functions in Javascript

Async - Documentation
caolan/async: Async utilities for node and the browser
modern-async
gulpjs/now-and-later: Map over an array or object of values in parallel or series, passing each through the async iterator, with optional lifecycle hooks.
mcollina/steed: horsepower for your modules

feross/run-auto: Determine the best order for running async functions, LIKE MAGIC!
feross/run-series: Run an array of functions in series
feross/run-parallel: Run an array of functions in parallel
feross/run-parallel-limit: Run an array of functions in parallel, but limit the number of tasks executing at the same time
feross/run-waterfall: Run an array of functions in series, each passing its results to the next function

Releasing Zalgo

Callbacks can be invoked synchronously and asynchronously, if an API mixes the two kind of invocation it's called "Releasing Zalgo".

Callbacks, synchronous and asynchronous : Havoc's Blog
Does taking a callback make a function asynchronous?
blog.izs.me — Designing APIs for Asynchrony

Solution: use process.nextTick() or Promise whose callback must be executed asynchronously with "macro-task" (setTimeout/setImmediate) or "micro-task" (MutationObserver/process.nextTick).

Promise

Promises/A+
Promise - JavaScript | MDN
JavaScript Promises: An introduction
Promise nuggets
Promises + FP = Beautiful Streams - Tech.pro
From callback to (Future -> Functor -> Monad) - Tech.pro
wbinnssmith/awesome-promises

mattdesl/promise-cookbook: a brief introduction to using Promises in JavaScript

sindresorhus/promise-fun: Promise packages, patterns, chat, and tutorials p-map, p-limit, p-series, ...
sindresorhus/loud-rejection: Make unhandled promise rejections fail loudly instead of the default silent fail

ES6 Promises in Depth
Promisees · Courtesy of ponyfoo.com visualization playground

All you need to know about Promise.all
The Dangers Of Promise.all() - YouTube Promise.allSettled()

Promise anti patterns · petkaantonov/bluebird Wiki
Promise Anti-patterns – Tao of Code
How to escape Promise Hell – Ronald Chen – Medium
We have a problem with promises ❗!important

doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);
new Promise((resolve, reject) => {})
  .then(successHandler1)
  .catch(failureHandler1) // captures all rejection and exception
  .then(successHandler2)
  .catch(failureHandler2); // captures all rejection and exception
Promise.all([promise1, promise2, ...])
    .then(successHandler)    // parameter: [value1, value2, ... ]
    .catch(failureHandler);  // parameter: the first rejection

// properly loop through an array
db.allDocs().then(docs =>
  Promise.all(docs.map(docs => db.remove(doc)))
).then(arrayOfResults => {
  // All docs have been removed() now!
});
.catch(console.log.bind(console)); // <-- this is badass

Cheatsheet

async/await

Understand promises before you start using async/await — Medium
JavaScript Async/Await Explained in 10 Minutes - Tutorialzine
Understanding Async Await | CSS-Tricks
Why I’m Not Waiting On ‘await’ (part 1) | getiblog
Why I’m Not Waiting On ‘await’ (part 2) | getiblog

await a promise, the current context execution will halt until the promise resolves. Use try/catch instead of catch().

jsoendermann/semaphore-async-await: Promise based Semaphore suitable to be used with async/await.

Making the Most out of Asynchronous JavaScript Series' Articles - DEV Community

AbortController

AbortSignal - Web APIs | MDN

AbortController is your friend
Aborting a signal: How to cancel an asynchronous task in JavaScript

wojtekmaj/make-cancellable-promise: Make any Promise cancellable.

Generators (ES6)

The Definitive Guide to the JavaScript Generators
Analysis of generators and other async patterns in node
ES6 Generators Deliver Go Style Concurrency
ES6 generators in depth
Generators: the Gnarly Bits
Generators vs Fibers - How To Node - NodeJS
How should I format the ECMAScript 6 generator asterisk?
Introduction to Generators & Koa.js - Tuts+ Code Tutorials
StrongLoop | Generators in Node.js: Common Misconceptions and Three Good Use Cases
Generators Are Like Arrays
Real-life Javascript Generators — Developers Writing — Medium
Callbacks vs Coroutines — Medium
Async Generator Functions in JavaScript | www.thecodebarbarian.com
How to use Generators in JavaScript - DEV Community

Strict mode

this should already be the default

Strict mode - JavaScript | MDN

Decorators

Exploring ES2016 Decorators — Google Developers — Medium
JavaScript Decorators From Scratch | by Mahdhi Rezvi | Nov, 2020 | Bits and Pieces

Date

Javascript date object always one day off? - Stack Overflow

new Date() and Date.parse() treats YYYY-MM-DD as UTC time.
Replace to / (input.replace('-','/','g')) is a hack to make it parse to local time.

Date - JavaScript | MDN
Date.prototype.getTimezoneOffset() - JavaScript | MDN
Intl.DateTimeFormat - JavaScript | MDN
Date formatting by tomberek · Pull Request #263 · marmelab/admin-on-rest
Demystifying DateTime Manipulation in JavaScript | Toptal

TimeZone tz = TimeZone.getTimeZone("UTC");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");
df.setTimeZone(tz);
String nowAsISO = df.format(new Date());
// or
// TimeZone tz = TimeZone.getTimeZone("Asia/Hong_Kong");
// DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmXXX");
// attention: IE only takes offset as "+08:00", not "+0800"
// use "XXX" instead of "Z" format

wojtekmaj/date-utils: A collection of date-related utilities.
Adding functions · Issue #6 · wojtekmaj/date-utils · GitHub

Strings/Regex

ES6 — strings — ECMAScript 2015 — Medium
New string features in ECMAScript 6

Regex

Unicode-aware regular expressions in ECMAScript 6 · Mathias Bynens
New regular expression features in ECMAScript 6

Unicode/Encoding

JavaScript has a Unicode problem · Mathias Bynens
Learn ES2015 · Babel
ES6 Strings (and Unicode, ❤) in Depth
Base64 encoding and decoding - Web APIs | MDN
UTF-8, TypedArrays, Base64, Unicode, and You
Unicode String to a UTF-8 TypedArray Buffer in JavaScript
Convert a TypedArray Buffer to Base64 in JavaScript
A bad UTF-8 converter
How I made a talking emoji using regular emojis and JavaScript string iterator iterates on code points

Template Strings (ES6)

Using ES6 template strings for regular expressions
HTML templating with ES6 template strings
Template strings: embedded DSLs in ECMAScript 6
A closer look at Underscore templates
Getting Literal With ES6 Template Strings

zspecza/common-tags: 🔖 Useful template literal tags for dealing with strings in ES2015+
chrisdickinson/digraph-tag: ES6 string template tag for quickly generating directed graph data
seegno/sql-tag: A template tag for writing elegant sql strings based on ES6 tagged template strings
chocolateboy/shell-escape-tag: An ES6+ template tag which quotes parameters for interpolation into shell commands

var index = 0;
var obj = {
  [`key${index}`]: index++,
  [`key${index}`]: index++,
  [`key${index}`]: index++,
};

console.log(obj);
// {"key0":0,"key1":1,"key2":2}

Inheritance

Object Playground: The Definitive Guide to Object-Oriented JavaScript

Elegant patterns in modern JavaScript: RORO - DEV Community 👩‍💻👨‍💻 Receive an object, return an object
Elegant patterns in modern JavaScript: Ice Factory - DEV Community 👩‍💻👨‍💻 return frozen object, no class involved

The Two Pillars of JavaScript — JavaScript Scene — Medium
Common Misconceptions About Inheritance in JavaScript — JavaScript Scene — Medium
How to Fix the ES6 class keyword — JavaScript Scene — Medium

JavaScript inheritance patterns — Medium ❗!important, three methods
🎉👨‍👩‍👧‍👧 JavaScript Visualized: Prototypal Inheritance - DEV Community 👩‍💻👨‍💻

The Heart & Soul of Prototypal OO: Concatenative Inheritance — JavaScript Scene — Medium
Master the JavaScript Interview: What’s the Difference Between Class & Prototypal Inheritance? — JavaScript Scene — Medium
Object-Oriented Patterns in JavaScript at nodePDX 2012 | Lanyrd
christianalfoni think-twice-about-classes

Understanding JavaScript Prototypes. – JavaScript, JavaScript…
Delegation vs Inheritance in JavaScript – JavaScript, JavaScript…
A fresh look at JavaScript Mixins – JavaScript, JavaScript…

Fluent JavaScript – Three Different Kinds of Prototypal OO
Classical Inheritance is Obsolete – How to Think in Prototypal OO slide
Stop Using Constructor Functions in JavaScript

JS Objects: Inherited a Mess
JS Objects: Distractions
JS Objects: De"construct"ion
Sanity Check: Object Creation Performance | getiblog

Prototypal Inheritance

Prototypal Inheritance: instances inherit directly from other objects. Instances are typically instantiated via factory functions or Object.create(). Instances may be composed from many different objects, allowing for easy selective inheritance.

JavaScript: proto
Prototypes as classes – an introduction to JavaScript inheritance
Object properties in JavaScript
Properties in JavaScript: definition versus assignment
JavaScript terminology: the two prototypes
JavaScript properties: inheritance and enumerability
JavaScript inheritance by example
JavaScript inheritance: beyond the basics (video)
Property assignment and the prototype chain
A closer look at _.extend and copying properties
2 Reasons Why You Must Understand Delegate Prototypes - DEV Community 👩‍💻👨‍💻
3 Different Kinds of Prototypal Inheritance: ES6+ Edition

Learning Javascript with Object Graphs (Part I) - How To Node - NodeJS
Learning Javascript with Object Graphs (Part II) - How To Node - NodeJS
Learning Javascript with Object Graphs (Part III) - How To Node - NodeJS
Prototypal Inheritance - How To Node - NodeJS

Inheritance and the prototype chain - JavaScript | MDN
Prototypal Inheritance
The Prototype Pattern - Learning JavaScript Design Patterns
A Plain English Guide to JavaScript Prototypes - Sebastian's Blog
Embrace prototypal object-oriented programming

new keyword first creates an empty object, then sets the prototype of this object to the prototype property of the constructor, then calls the constructor function with this pointing to the newly-created object, and finally returns the object. It’s an indirect way of doing prototype-based OOP that looks like class-based OOP.

Object.create()

Object.create() - JavaScript | MDN
javascript - Understanding Crockford's Object.create shim - Stack Overflow

// http://javascript.crockford.com/prototypal.html
Object.create = function (o) {
  function F() {}
  F.prototype = o;
  return new F();
};

Example

// CLASSICAL INHERITANCE

// Parent class constructor
function Parent() {
  this.a = 42;
}

// Parent class method
Parent.prototype.method = function method() {};

// Child class constructor
function Child() {
  // this inherits properties from parent
  // effectively setting `this.__proto__ = Parent.prototype`
  Parent.call(this);
  this.b = 3.14159;
}

// Inherit from the parent class (THIS IS PROTOTYPAL)
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
// `util.inherits()` is essentially the above two lines

// Child class method
Child.prototype.method = function method() {
  Parent.prototype.method.call(this);
};

// Instantiate
this.instance = new Child();

stampit

stampit-org/stampit: OOP is better with stamps: Composable object factories.
Ultra Flexible JavaScript Object Oriented Programming with Stamps - Barbarian Meets Coding

Introducing the Stamp Specification — JavaScript Scene — Medium
Composition over Inheritance — mpj on programming — Medium

Simulating Class Inheritance (ES6 Class)

Class Inheritance: instances inherit from classes (like a blueprint — a description of the class), and create sub-class relationships: hierarchical class taxonomies. Instances are typically instantiated via constructor functions with the new keyword.

class keyword from ES6 is a syntactic sugar that simulates class inheritance. It still add stuffs to the prototype chain under the hood but it encourages wrongful assumptions for developers from other background so is considered harmful.

Prototypal Object-Oriented Programming using JavaScript · An A List Apart Article ❗!important, why mimicking class inheritance is bad
Is “Class” In ES6 The New “Bad” Part? — Medium

Classical Inheritance in JavaScript
Classes in ECMAScript 6 (final semantics)
Simple JavaScript Inheritance: What You Need to Know - Tuts+ Code Tutorial
Understanding ECMAScript 6: Class and Inheritance
StrongLoop | An Introduction To JavaScript ES6 Classes
Javascript Classes — Under The Hood – tajawal – Medium

JavaScript Constructor Functions vs Factory Functions

http://ejohn.org/blog/simple-javascript-inheritance/
http://phrogz.net/JS/classes/OOPinJS.html
http://phrogz.net/JS/classes/OOPinJS2.html
http://metaduck.com/05-dump-this.html

Zone

Why asynchronous exceptions are uncatchable
Understanding Zones

can-zone
canjs/can-zone: A context for tracking asynchronous activity in JavaScript applications.

Brian Ford - Zones - NG-Conf 2014 - YouTube

Memory leak

An interesting kind of JavaScript memory leak - Meteor
4 Types of Memory Leaks in JavaScript and How to Get Rid Of Them

Memory leak patterns in JavaScript
Understand memory leaks in JavaScript applications

Module (ES5)

RequireJS, Browserify, AMD e CommonJS: module loaders SPA
Making sense of the difference between AMD, CommonJS, RequireJS and Browserify | Red Airship
Why I stopped using AMD
Node Modules to Rule Them All - Quils in Space
JavaScript Modules: A Beginner’s Guide — Free Code Camp
umdjs/umd: UMD (Universal Module Definition) patterns for JavaScript modules that work everywhere.
Browserify and the Universal Module Definition | dontkry.com

JavaScript Modules: A Beginner’s Guide scratch, CommonJS, AMD, UMD, also cover ES6
JavaScript Modules Part 2: Module Bundling

(function (name, context, definition) {
  if (typeof module != "undefined" && module.exports)
    module.exports = definition();
  else if (typeof define === "function" && define.amd) define(name, definition);
  else context[name] = definition();
})("calculator", this, function () {
  // your module here!
  return {
    sum: function (a, b) {
      return a + b;
    },
  };
});

ES Modules (ESM)

The WHATWG Blog — Adding JavaScript modules to the web platform
JavaScript Modules
ECMAScript 6 modules: the final syntax
JavaScript modules - JavaScript | MDN
ES modules: A cartoon deep-dive – Mozilla Hacks – the Web developer blog
Understanding ES6 Modules
JavaScript Module Pattern: In-Depth
JavaScript Modules the ES6 Way ◆ 24 ways
Components Should Be Focused, Independent, Reusable, Small And Testable (FIRST)
ES6 modules · rollup/rollup Wiki
JavaScript Modules: Welcome to My Emo Hellscape — Medium
JavaScript Modules: A Beginner’s Guide — Free Code Camp — Medium
An Introduction To JavaScript ES6 Modules | npmawesome.com
JavaScript ‪Module Cheatsheet 📄‬ - DailyJS - Medium
ES Modules, the JavaScript Module System
Exploring JS 16. Modules

Tomorrow’s ES Modules Today!. 💡 For a deeper dive check out the Node… | by John-David Dalton | Web Dev @ Microsoft | Medium
standard-things/esm: Tomorrow's ECMAScript modules today! ESM loader for Node.js

Node.js, TC-39, and Modules – Hacker Noon
An Update on ES6 Modules in Node.js – Node.js Collection – Medium
The Current State of Implementation and Planning for ESModules
javascript - When should I use curly braces for ES6 import? - Stack Overflow
Modules Modules Modules [I] - YouTube

ES Modules in Node.js

nodejs-notes#ES Modules

Workflow

The Hitchhiker's Guide to Modern JavaScript Tooling - React Kung Fu
addyosmani/es6-tools
DailyJS: Transpilers: This Time It's Different
How to Use ES6 for Universal JavaScript Apps — JavaScript Scene — Medium
Practical Workflows for ES6 Modules
Setting up an ES6 Project Using Babel and Browserify
Traceur, Gulp, Browserify and ES6 - Matt Greer
Using ES6 with npm today — Mammal
Why Babel Matters
How to Write a JavaScript Library - Introduction - JavaScript Video Tutorial #free @eggheadio

Derivatives

scala#Scala.js
web-assembly#Python in Browser

List of languages that compile to JS · jashkenas/coffeescript Wiki
Make ES6, Not Coffee » Gofore

google/j2cl: Java to Closure JavaScript transpiler
J2CL: A Java-to-JavaScript Transpiler

ReasonML/ReScript

ReScript Documentation BuckleScript + JS part of Reason, v3 (.re) -> v8 (.res)
rescript-lang/rescript-vscode: Official VSCode plugin for ReScript

BuckleScript is Rebranding | ReScript Blog
BuckleScript is now ReScript

rescript-lang/syntax: ReScript's newest syntax as a standalone repo.
Language Features Overview | ReScript Language Manual
Migrate to ReScript Syntax | ReScript Language Manual

rescript-lang/rescript-compiler: The compiler for ReScript. backed by Ninja

Hello World! in Rescript-React - DEV Community bs-platform + Snowpack
ReScript – the language after TypeScript? - codecentric AG Blog

ReasonML is backed by ReScript which compiles OCaml to JavaScript.
Reason
What & Why
Syntax Cheatsheet
Protoship: design, develop, and scale successful web applications
ReasonML - React as first intended
Exploring ReasonML and functional programming
What makes ReasonML so great? – LogRocket
ReasonML Programming - Full Course for Beginners - YouTube

Get Started with Reason from @nikgraf on @eggheadio

ReasonReact · All your ReactJS knowledge, codified.
What & Why · ReasonReact
A ReasonReact Tutorial | Jared Forsyth.com
Learning ReasonReact Step by Step Part: 0 - DEV Community 👩‍💻👨‍💻

TypeScript

typescript-notes

Flow

Flow: A Static Type Checker for JavaScript
Flow Type Cheat Sheet - SaltyCrane Blog

Harden up Node.js with Flow: Part 1 – codeburst
Harden up Node.js with Flow: Part 2 – codeburst

ES6

TODO: digest these articles and put them into the above categories
Refer to categorization here:
A guide to 2ality’s posts on the JavaScript language > A guide to 2ality’s posts on ECMAScript.next/ECMAScript 6 > What are your favorite JavaScript ES6 features? > zloirock/core-js
Add these to commonroom/es6/

Better Node with ES6, Pt. I | Scotch ❗!important
Better JavaScript with ES6, Pt. II: A Deep Dive into Classes | Scotch ❗!important
Better JavaScript with ES6, Pt. III: Cool Collections & Slicker Strings | Scotch ❗!important

Six Steps for Approaching the Next JavaScript -Telerik Developer Network
Learn ECMAScript6 by doing it
How to Learn ES6 — JavaScript Scene — Medium
Get Started with ECMAScript 6 - Treehouse Blog
A Quick Tour Of ES6 (the bits you'll actually use)

lukehoban/es6features: Overview of ECMAScript 6 features
ES6 Workshop by Kent C. Dodds

https://kpdecker.github.io/six-speed/ ES6/ES5 speed comparison

Make your JavaScript code shine: knockout old ES5 hacks
Make your JavaScript code shine: knockout old ES5 hacks (Part 2)

ES6 In Depth Articles ✩ Mozilla Hacks – the Web developer blog
ES6 Overview in 350 Bullet Points - Pony Foo
Articles tagged "es6-in-depth" - Pony Foo
Learn ES2015 · Babel
Tagtree course: Expert ES6
jQuery UK - EcmaScript 6 - Google Slides
[ES6: What are the benefits of the new features in practice? | CodeUtopia](http://codeutopia.n## ES6et/blog/2015/01/06/es6-what-are-the-benefits-of-the-new-features-in-practice/)
ECMAScript 6 Power Tutorial - Tuts+ Code Tutorials
Porting your Javascript to ES6 — Lexical Labs Engineering — Medium
A Quick Tour Of ES6 (the bits you'll actually use)

A guide to 2ality’s posts on ECMAScript.next/ECMAScript 6
Using ECMAScript 6 today
ECMAScript.next: for-of, iterators, generators
ECMAScript 6: new OOP features besides classes
Idiomatic ES6

Understanding JavaScript Proxies by Examining on-change Library

You searched for ecmascript 6 - SitePoint

features

ECMAScript 6: New Features: Overview and Comparison
lukehoban/es6features
sindresorhus/esnext-showcase
hemanth/paws-on-es6
help.wtf ECMAScript 6 Cheatsheet
ECMAScript 6 compatibility table

ESNext

Taming the asynchronous beast with ES7
ECMAScript - A Taste from ES2019 (ES10)
ES5 to ESNext — here’s every feature added to JavaScript since 2015

Here are examples of everything new in ECMAScript 2016, 2017, and 2018
ES2021

JavaScript Enterprise Container (JEC)

JavaScript Enterprise Container: From Java to Node.js - DZone Web Dev
Creating RESTful APIs With JEC — Part 1: JavaScript API for RESTful Services - DZone Microservices
Creating RESTful APIs With JEC — Part 2: Version APIs - DZone Microservices
Creating RESTful APIs With JEC — Part 3: Dependency Injection - DZone Microservices
Creating RESTful APIs With JEC (Part 4): Unit Testing - DZone Microservices

Pitfalls

Wat — Destroy All Software Talks funny flashtalk
Javascript vs memes - DEV Community

[1] + [2] - [3] === 9!? Looking into assembly code of coercion. - wanago.io - Marcin Wanago Blog

Sam Torso's answer to If there is a piece of code you'd hang on your wall, what would it be? - Quora

JavaScript Not Working? Here are 10 Common JavaScript Problems | Toptal

Top 10 Mistakes Node.js Developers Make

Major and minor JavaScript pitfalls and ECMAScript 6

JavaScript Common Pitfalls
The JavaScript Minefield

JS Comparison Table

JavaScript Code Smells

JavaScript Fatigue

Javascript Fatigue — Medium
How it feels to learn JavaScript in 2016

Tips and Tricks

maybe a new post?

JS Tips – A JS tip per day!
7 Essential JavaScript Functions
12 extremely useful hacks for JavaScriptJscrambler Blog
A Map To Modern JavaScript Development (2017)
10 JavaScript concepts Node.js programmers must master | InfoWorld

Lightning Fast Filtering in JavaScript | Chris Smith

JavaScript Compiler Optimization Techniques— only for Experts | by Supratik Basu | codeburst

Nullable fields

How to handle deeply-nested nullable fields in JavaScript and TypeScript
create-react-app/CHANGELOG.md at master · facebook/create-react-app CRA 3.3 supports Optional Chaining and Nullish Coalescing Operators out of the box

const idx = <Input, Output>(input: Input, select: (input: Input) => Output) => {
  try {
    return select(input);
  } catch (e) {
    return null;
  }
};

const firstMailSentOn = idx(user, (u) => user.addresses[0].mail[0].sentOn);
// Optional chaining operator
const firstMailSentOn = user.addresses?.[0]?.mail?[0]?.sentOn;

Maintainable Code

Refactoring a javascript video store
Untangling Spaghetti Code: Writing Maintainable JavaScript

Private member

for information hiding

Private Members in JavaScript
Managing the private data of ES6 classes
Chapter 17. Objects and Inheritance

// proper inheritance
http://metaduck.com/08-module-pattern-inheritance.html

Functions

function become method automatically
bound method: instance method
unbound method: class method

Understanding how this works in Javascript - The call-site - DEV Community
Understanding how this works in Javascript - Default Binding - DEV Community