# 
JavaScript, a high-level programming language.
 
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
 
 
 
   
 
 
 
   
 
 
 
   
 
 
 
   
 
 
 
  2025
 
 
 
↓ 
 
 
# 
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  proposed  the internet 
More details about the proposal on w3.org 
 
 
 
1990 
 
  
 
The first web browser WorldWideWeb    Later it was renamed to Nexus. It only ran on the NeXT platform.
Image source , browser source code 
 
 
 
1991 
 
   
 
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 "the first graphical web browser" .  Developed by four Finnish students.
Image source 
 
 
 
1993 
 
 
 
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 was announced   The first free but commercial web browser.
Image source and many more 
 
 
 
1995 
 
 
 
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
 
 
 
   
 
 
 
   
 
 
 
   
 
 
 
   
 
 
 
  2025
 
 
 
 
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
 
 
 
   
 
 
 
   
 
 
 
   
 
 
 
   
 
 
 
  2025
 
 
 
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