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.
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
- add
//@ts-check
to the top of any JavaScript file - use
{ "compilerOptions": { "checkJs": true } }
injsconfig.json
- use
javascript.implicitProjectConfig.checkJs: true
in VSCode'ssettings.json
EditorConfig
Lint Like It’s 2015 — Medium
Are Semicolons Necessary in JavaScript? - YouTube
- IIFE
- array
- return
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
- don't use 2nd param of
then()
, trailingcatch()
is better in all cases - passing
then()
non-function will cause the previous promise's result to fall through
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
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
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
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
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 tocommonroom/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
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