#
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
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 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
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