This site is mobile accessible. Press the "Tap Here" button to use a different font-size.
Tap Here!
Smartphone icons created by Freepik - Flaticon
9.7 JS 2019
JavaScript Version Numbers
Old JS versions are named by numbers: ES5 (2009) and ES6 (2015).
From 2016, versions are named by year: ECMAScript 2016, 2017, 2018, 2019, ...
New Features in ES2019
A membership with W3SCHOOLS.COM are required to access the links below.
Warning
These features are relatively new.
Older browsers may need an alternative code (Polyfill)
Optional catch Binding
From ES2019 you can omit the catch parameter if you don't need it:.
Example
Before 2019:
try {
// code
} catch (err) {
// code
}
After 2018
try {
// code
} catch {
// code
}
Optional catch binding is supported in all modern browsers since January 2020
Chrome 66
Edge 79
Firefox 58
Safari 11.1
Opera 53
Apr 2018
Jan 2020
Jan 2018
Mar 2018
May 2018
JavaScript Array flatMap()
ES2019 added the Array flatMap() method to JavaScript.
The flatMap() method first maps all elements of an array and then creates a new array by flattening the array.
const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap((x) => x * 2);
Stable Array sort()
ES2019 revised the Array sort() method.
Before 2019, the specification allowed unstable sorting algorithms such as QuickSort.
After ES2019, browsers must use a stable sorting algorithm:
When sorting elements on a value, the elements must keep their relative position to other elements with the same value.
const myArr = [
{name:"X00",price:100 },
{name:"X01",price:100 },
{name:"X02",price:100 },
{name:"X03",price:100 },
{name:"X04",price:110 },
{name:"X05",price:110 },
{name:"X06",price:110 },
{name:"X07",price:110 }
];
In the example above, when sorting on price, the result is not allowed to come out with the names in an other relative position like this:
X01 100
X03 100
X00 100
X03 100
X05 110
X04 110
X06 110
X07 110
Revised JSON.stringify()
ES2019 revised the JSON stringify() method.
Before 2019, JSON could not stringify character encoded with \.
let text = JSON.stringify("\u26D4");
Before ES2019, using JSON.stringify() JSON on UTF-8 code points (U+D800 to U+DFFF) returned broken Unicode characters like ���.
After this revision, strings with UTF-8 code points convert safely with JSON.stringify() , and back to the original using JSON.parse() .
Separator Symbols
Line separators and paragraph separator symbols (\u2028 and \u2029) are now allowed in string literals.
Before 2019, these were treated as line terminators and resulted in error exceptions:
// This is valid in ES2019:
let text = "\u2028";
Note
Now, JavaScript and JSON have equal rules.
Before ES2019:
text = JSON.parse('"\u2028"') would parse to ''.
text = '"\u2028"' would give syntax error .
Revised Function toString()
ES2019 revised the Function toString() method.
The toString() method returns a string representing the source code of a function.
From 2019, toString() must return the source code of the function including comments, spaces, and syntax details.
Before 2019, different browsers returned different variants of the function (like without comments and spaces). From 2019 the function should be returned exactly as it is written.
function myFunction(p1, p2) {
return p1 * p2;
}
JavaScript icons used in the buttons provided by ICONS8.COM . Smartphone icons created by Freepik - Flaticon
Example files created in this module:
JS Strings - String.trim()
JS Arrays - isArray()
JS Array.forEach()
JS Array.map()
JS Array.filter()
JS Array.reduce()
JS Array.reduceRight()
JS Array.every()
JS Array.some()
JS Array.indexOf()
JS Array.lastIndexOf()
JS JSON.stringify()
JS Date.now()
JS Getters and Setters part 1
JS Getters and Setters part 2
JS Getters and Setters part 3
JS New Object Property Methods part 1
JS New Object Property Methods part 2
JS New Object Property Methods part 3
JS Property Access on Strings part 1
JS Property Access on Strings part 2
JS Strings Over Multiple Lines part 1
JS Strings Over Multiple Lines part 2
JS let
JS const
JS Arrow Functions part 1
JS Arrow Functions part 2
JS For Of Loop - Looping over an Array
JS For Of Loop - Looping over a String
JS Classes - Using a Class
JS Promise - Using a Promise
JS Using JavaScript Symbol()
JS Functions Default Parameter Values
JS Functions - The Rest Parameter
JS Arrays - The find() Method
JS Arrays - The findIndex() Method
JS Number Object Properties - EPSILON
JS Number Object Properties - MIN_SAFE_INTEGER
JS Number Object Properties - MAX_SAFE_INTEGER
JS Numbers - The isInteger() Method
JS Numbers - The isSafeInteger() Method
JS Numbers - The isFinite() Method
JS Numbers - The isNaN() Method
JS Exponentiation Operator
JS Exponentiation Operator - Math.pow()
JS Exponentiation Assignment (**=)
JS Arrays - The includes() Method
JS Strings - The padStart() Method
JS Strings - The padEnd() Method
JS Object Methods - Object.entries() method
JS Object Methods - Object.values() method
JS Async Functions
JS Strings - The trimStart() Method
JS Strings - The trimEnd() Method
JS Objects - The fromEntries() Method
JS Arrays - The flat() Method
JS Arrays - The flatMap() Method
JS Stable Sort
JS JSON - Revised stringify()
JS Strings - Separator Symbols
JS Functions - The toString() Method
JS Numbers - Create a BigInt
JS Numbers - BigInt typeof
JS Strings - The matchAll() Method part 1
JS Strings - The matchAll() Method part 2
JS Strings - The matchAll() Method part 3
JS Operators - The ?? Operator
JS Operators - The ?. Operator
JS Strings - The replaceAll() Method part 1
JS Strings - The replaceAll() Method part 2
JS Numbers - Numeric Separator (_) part 1
JS Numbers - Numeric Separator (_) part 2
JS Numbers - Numeric Separator (_) part 3
JS Arrays - Array at()
JS Strings - The at() Method