jskatas.org Continuously Learn JavaScript. Your Way.
#

JavaScript, a high-level programming language.

JavaScript Logo

Created 59 years after the first
high-level programming language COBOL.

#

JS Chronicle A short journey through JS from it's beginning.



1995


 


 


 


 


2000


 


 


 


 


2005


 


 


 


 


2010


 


 


 


 


2015


 


 


 


 


2020


 


 


 


2024
#

A bit Browser History JavaScript was created for web scripting.
But when did the history of browsers begin, making JavaScript necessary?

1989 Tim Berners-Lee's proposal for the internet Tim Berners-Lee proposed the internet More details about the proposal on w3.org
1990 Tim Berners-Lee's WorldWideWeb browser The first web browser WorldWideWeb
Later it was renamed to Nexus. It only ran on the NeXT platform. Image source, browser source code
1991 Line Mode Browser Nicola Pellow's Line Mode Browser
The first cross-platform browser from the CERN, written in C.
It displayed text only, no images and ran on the command line. Image source
Erwise browser Erwise "the first graphical web browser".
Developed by four Finnish students. Image source
1993 AMosaic Amiga Web browser NCSA Mosaic was released.
A cross-platform browser with a GUI, for AmigaOS, Classic Mac OS, Unix, OpenVMS, OS/2, Microsoft Windows. This browser was the base for the successful Netscape. Details Image source
1994 Netscape Navigator 1.0 Netscape Navigator 1.0 was announced
The first free but commercial web browser. Image source and many more
1995 The JavaScript logo, created around 2011 Netscape Navigator 2.0 ships JavaScript
The initial version of JavaScript is in the beta of Netscape Navigator 2.0. The JS logo was created around 2011 source is here
#

JavaScript was implemented in May 1995 and announced December 4th 1995.

After Brendan Eich created it in ten days.
(Brendan Eich believes it was May 6–15)

#

In 1997 the "official" journey of JavaScript began, with its first specification
(also known as ECMAScript 1 or ES1).

ES1



1995


 
ES1

1997


 


 


2000


 


 


 


 


2005


 


 


 


 


2010


 


 


 


 


2015


 


 


 


 


2020


 


 


 


2024



The official title of the specification is:
ECMAScript: A general purpose, cross-platform programming language

#

ES1 started with nine built-ins,
called 'Native ECMAScript Objects'.

Array, Boolean, Date, Function,
Math, Number, Object, String
and seven global functions.

#

The 4th Edition

never came about
due to disagreements on the language evolution.

#

ES6 – Game Changer



1995


 
ES1

 
2

 
3

 


2000


 


 


 


 


2005


 


 


 


 


2010
ES5

 


 


 


 
ES6

2015


 


 


 


 


2020


 


 


 


2024

Since 2015 a new edition
is published each year!

The names start to include the year, for example,
ES2016 in 2016, ES2017 in 2017, and so on.

#

The Number of Built-ins

ES1 global Array Boolean Date Function Math Number Object String +9
ES2
ES3 Error EvalError RangeError ReferenceError RegExp SyntaxError TypeError URIError +8
ES5 JSON +1
ES6 Symbol Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet ArrayBuffer DataView GeneratorFunction Generator Promise Reflect Proxy +21
ES2016
ES2017
ES2018
ES2019
ES2020 BigInt +1
ES2021 AggregateError WeakRef FinalizationRegistry +3
ES2022
ES2023
ℹ️ Touch a row, to see the built-ins added that year.

Latest JS has 43 Built-ins.

If you run Object.keys(globalThis).length in the browser console
the number might be far above 200, due to all the APIs a browser provides.

#

What was Added When?

ℹ️ Use the mouse/touch to explore the data!

ES1 global Infinity NaN eval parseInt parseFloat escape unescape isNaN isFinite Array Boolean Date Function Number Object String Array prototype length constructor reverse join sort Boolean prototype constructor Date prototype parse UTC constructor getTime getYear getFullYear getUTCFullYear getMonth getUTCMonth getDate getUTCDate getDay getUTCDay getHours getUTCHours getMinutes getUTCMinutes getSeconds getUTCSeconds getMilliseconds getUTCMilliseconds getTimezoneOffset setTime setMilliseconds setUTCMilliseconds setSeconds setUTCSeconds setMinutes setUTCMinutes setHours setUTCHours setDate setUTCDate setMonth setUTCMonth setFullYear setUTCFullYear setYear toUTCString toGMTString toLocaleString Function prototype length constructor arguments Math E LN10 LN2 LOG2E LOG10E PI SQRT1_2 SQRT2 abs acos asin atan atan2 ceil cos exp floor log max min pow random round sin sqrt tan Number prototype MAX_VALUE MIN_VALUE NaN NEGATIVE_INFINITY POSITIVE_INFINITY constructor Object prototype constructor valueOf toString String prototype fromCharCode constructor length charAt charCodeAt indexOf lastIndexOf split substring toLowerCase toUpperCase ES2 ES3 global undefined decodeURI decodeURIComponent encodeURI encodeURIComponent RegExp Error EvalError RangeError ReferenceError SyntaxError TypeError URIError Array concat pop push shift slice splice unshift Date toDateString toTimeString toLocaleDateString toLocaleTimeString Error prototype constructor name message EvalError prototype constructor name message Function apply call Number toFixed toExponential toPrecision Object toLocaleString hasOwnProperty isPrototypeOf propertyIsEnumerable RangeError prototype constructor name message ReferenceError prototype constructor name message RegExp prototype constructor global ignoreCase lastIndex multiline source exec test String concat localeCompare match replace search slice toLocaleLowerCase toLocaleUpperCase SyntaxError prototype constructor name message TypeError prototype constructor name message URIError prototype constructor name message ES5 Array isArray indexOf lastIndexOf every some forEach map filter reduce reduceRight Date now toISOString toJSON Function bind JSON parse stringify Object getPrototypeOf getOwnPropertyDescriptor getOwnPropertyNames create defineProperty defineProperties seal freeze preventExtensions isSealed isFrozen isExtensible keys String trim ES6 global ArrayBuffer DataView Float32Array Float64Array Int8Array Int16Array Int32Array Proxy Promise Map Set Symbol Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap WeakSet Object assign getOwnPropertySymbols is setPrototypeOf Function name Symbol constructor prototype hasInstance isConcatSpreadable iterator match replace search species split toPrimitive toStringTag unscopables for keyFor Number EPSILON MAX_SAFE_INTEGER MIN_SAFE_INTEGER isFinite isInteger isNaN isSafeInteger parseFloat parseInt Math acosh asinh atanh cbrt clz32 cosh expm1 fround hypot imul log2 log10 log1p sign sinh tanh trunc String raw codePointAt endsWith fromCodePoint includes normalize repeat startsWith RegExp flags sticky unicode Array from of copyWithin entries fill find findIndex includes keys values Int8Array prototype BYTES_PER_ELEMENT from of constructor buffer byteLength byteOffset length copyWithin entries every fill filter find findIndex forEach indexOf join keys lastIndexOf map reduce reduceRight reverse set slice some sort subarray toLocaleString toString values Uint8Array prototype BYTES_PER_ELEMENT from of constructor buffer byteLength byteOffset length copyWithin entries every fill filter find findIndex forEach indexOf join keys lastIndexOf map reduce reduceRight reverse set slice some sort subarray toLocaleString toString values Uint8ClampedArray prototype BYTES_PER_ELEMENT from of constructor buffer byteLength byteOffset length copyWithin entries every fill filter find findIndex forEach indexOf join keys lastIndexOf map reduce reduceRight reverse set slice some sort subarray toLocaleString toString values Int16Array prototype BYTES_PER_ELEMENT from of constructor buffer byteLength byteOffset length copyWithin entries every fill filter find findIndex forEach indexOf join keys lastIndexOf map reduce reduceRight reverse set slice some sort subarray toLocaleString toString values Uint16Array prototype BYTES_PER_ELEMENT from of constructor buffer byteLength byteOffset length copyWithin entries every fill filter find findIndex forEach indexOf join keys lastIndexOf map reduce reduceRight reverse set slice some sort subarray toLocaleString toString values Int32Array prototype BYTES_PER_ELEMENT from of constructor buffer byteLength byteOffset length copyWithin entries every fill filter find findIndex forEach indexOf join keys lastIndexOf map reduce reduceRight reverse set slice some sort subarray toLocaleString toString values Uint32Array prototype BYTES_PER_ELEMENT from of constructor buffer byteLength byteOffset length copyWithin entries every fill filter find findIndex forEach indexOf join keys lastIndexOf map reduce reduceRight reverse set slice some sort subarray toLocaleString toString values Float32Array prototype BYTES_PER_ELEMENT from of constructor buffer byteLength byteOffset length copyWithin entries every fill filter find findIndex forEach indexOf join keys lastIndexOf map reduce reduceRight reverse set slice some sort subarray toLocaleString toString values Float64Array prototype BYTES_PER_ELEMENT from of constructor buffer byteLength byteOffset length copyWithin entries every fill filter find findIndex forEach indexOf join keys lastIndexOf map reduce reduceRight reverse set slice some sort subarray toLocaleString toString values Map prototype size constructor clear delete entries forEach get has keys set values Set prototype size constructor add clear delete entries forEach has keys values WeakMap prototype constructor delete get has set WeakSet prototype constructor add delete has ArrayBuffer prototype isView constructor byteLength slice DataView prototype constructor buffer byteLength byteOffset getFloat32 getFloat64 getInt8 getInt16 getInt32 getUint8 getUint16 getUint32 setFloat32 setFloat64 setInt8 setInt16 setInt32 setUint8 setUint16 setUint32 GeneratorFunction length prototype constructor name Generator prototype constructor next return throw Promise prototype all race reject resolve constructor catch then Reflect apply construct defineProperty deleteProperty enumerate get getOwnPropertyDescriptor getPrototypeOf has isExtensible ownKeys preventExtensions set setPrototypeOf Proxy revocable constructor ES2016 Array includes ES2017 Object values entries getOwnPropertyDescriptors ES2018 Promise finally RegExp dotAll ES2019 Array flat flatMap Object fromEntries ES2020 global globalThis BigInt BigInt asIntN asUintN prototype toLocaleString toString valueOf constructor Promise allSettled ES2021 global WeakRef FinalizationRegistry String replaceAll Promise any AggregateError errors WeakRef prototype deref constructor FinalizationRegistry prototype register unregister constructor ES2022 Array at Object hasOwn ES2023 Array fromAsync toReversed toSorted toSpliced with
#

You Want to Learn More?

I am Wolfram Kriesing.

Come to my workshop
Modern JavaScript Development

#

Or do a Kata...

Maybe the Number.isInteger() kata, for a start?

Or the more difficult strict mode kata?

v1.2