JavaScript ECMAScript 2021


Obsah

    Zobrazit obsah

Čísla verzí JavaScriptu

Staré verze JS jsou pojmenovány podle čísel: ES5 (2009) a ES6 (2015).

Od roku 2016 jsou verze pojmenovány podle roku: ECMAScript 2016, 2017, 2018, 2019, ...

Nové funkce v ES2021

  • Promise any():
    style="word-wrap: break-word;">const first=wait Promise.any([prom1,prom2,prom3]);

  • Řetězec nahraditVše()

  • Číselné oddělovače (_)


Nové funkce v ES2022

  • Pole na()

  • Řetězec na()

  • RegExp /d

  • Object.hasOwn()

  • chyba.příčina

  • čekat na dovoz

  • Soukromé metody a obory

  • Deklarace pole třídy

Varování

Tyto funkce jsou relativně nové.

Starší prohlížeče mohou potřebovat alternativní kód (Polyfill)


JavaScriptový řetězec ReplaceAll()

ES2021 zavedl řetězcovou metodu replaceAll():

Příklad

text = text.replaceAll("Cats","Dogs");
text = text.replaceAll("cats","dogs");

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The replaceAll() Method</h2>

<p>ES2021 intoduced the string method replaceAll().</p>

<p id="demo"></p>

<script>
let text = "I love cats. Cats are very easy to love. Cats are very popular."
text = text.replaceAll("Cats","Dogs");
text = text.replaceAll("cats","dogs");

document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>

Metoda replaceAll() umožňuje zadat a regulární výraz místo řetězce, který má být nahrazen.

Pokud je parametrem regulární výraz, musí být nastaven globální příznak (g), jinak je vyvolána chyba TypeError.

Příklad

text = text.replaceAll(/Cats/g,"Dogs");
text = text.replaceAll(/cats/g,"dogs");

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The replaceAll() Method</h2>

<p>ES2021 intoduced the string method replaceAll().</p>

<p id="demo"></p>

<script>
let text = "I love cats. Cats are very easy to love. Cats are very popular";
text = text.replaceAll(/Cats/g,"Dogs");
text = text.replaceAll(/cats/g,"dogs");

document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>

Poznámka

ES2020 zavedl řetězcovou metodu matchAll().



Číselný oddělovač JavaScript (_)

ES2021 zavedl číselný oddělovač (_), aby byla čísla čitelnější:

Příklad

const num = 1_000_000_000;

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Numbers</h1>

<p>ES2021 intoduced the numeric separator (_) to make numbers more readable:</p>
<p id="demo"></p>

<script>
const num = 1_000_000_000;
document.getElementById("demo").innerHTML = num;
</script>

</body>
</html>

Číselný oddělovač je pouze pro vizuální použití.

Příklad

const num1 = 1_000_000_000;
const num2 = 1000000000;
(num1 === num2); 

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Numbers</h1>

<p>ES2021 intoduced the numeric separator (_) to make numbers more readable:</p>

<p>Is 1_000_000_000 the same as 1000000000?</p>
<p id="demo"></p>

<script>
const num1 = 1_000_000_000;
const num2 = 1000000000;
document.getElementById("demo").innerHTML = (num1 === num2);
</script>

</body>
</html>

Číselný oddělovač lze umístit kdekoli v čísle:

Příklad

const num1 = 1_2_3_4_5;

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Numbers</h1>

<p>ES2021 intoduced the numeric separator (_) to make numbers more readable:</p>
<p id="demo"></p>

<script>
const num = 1_2_3_4_5;
document.getElementById("demo").innerHTML = num;
</script>

</body>
</html>

Poznámka

Číselný oddělovač není povolen na začátku ani na konci čísla.

V JavaScriptu mohou pouze proměnné začínat znakem _.

Číselný oddělovač je podporován ve všech moderních prohlížečích od ledna 2020:

Chrome 75 Edge 79 Firefox 74 Safari 13.1 Opera 67
Jun 2019 Jan 2020 Oct 2019 Sep 2019 Jun 2019

Pole JavaScript at()

ES2022 zavedl metodu pole at():

Příklady

Získejte třetí prvek ovoce:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits.at(2);

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The at() Method</h2>

<p>The at() method returns an indexed element from an array:</p>

<p id="demo"></p>

<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits.at(2);

document.getElementById("demo").innerHTML = fruit;
</script>

</body>
</html>

Získejte třetí prvek ovoce:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[2];

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Notation</h2>

<p>The bracked notation [] returns an indexed element from an array:</p>

<p id="demo"></p>

<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[2];

document.getElementById("demo").innerHTML = fruit;
</script>

</body>
</html>

Metoda at() vrací indexovaný prvek z pole.

Metoda at() vrací totéž jako [].

Metoda at() je podporována ve všech moderních prohlížečích od března 2022:

Chrome 92 Edge 92 Firefox 90 Safari 15.4 Opera 78
Apr 2021 Jul 2021 Jul 2021 Mar 2022 Aug 2021

Poznámka

Mnoho jazyků umožňuje indexování záporných závorek jako [-1] pro přístup k prvkům z konce objekt/pole/řetězec.

To v JavaScriptu není možné, protože [] se používá pro přístup k polím i objektům. obj[-1] odkazuje na hodnotu klíče -1, nikoli na poslední vlastnost objektu.

K vyřešení tohoto problému byla v ES2022 zavedena metoda at().


Řetězec JavaScriptu at()

ES2022 zavedl řetězcovou metodu at():

Příklady

Získejte třetí písmeno jména:

const name = "W3Schools";
let letter = name.at(2);

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Strings</h1>
<h2>The at() Method</h2>

<p>The at() method returns an indexed element from a string:</p>

<p id="demo"></p>

<script>
const name = "W3Schools";
let letter = name.at(2);

document.getElementById("demo").innerHTML = letter;
</script>

</body>
</html>

Získejte třetí písmeno jména:

const name = "W3Schools";
let letter = name[2];

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Strings</h1>
<h2>Bracket Notation</h2>

<p>The bracked notation [] returns an indexed element from a string:</p>

<p id="demo"></p>

<script>
const name = "W3Schools";
let letter = name[2];

document.getElementById("demo").innerHTML = letter;
</script>

</body>
</html>

Metoda at() vrací indexovaný prvek z řetězce.

Metoda at() vrací totéž jako [].

Metoda at() je podporována ve všech moderních prohlížečích od března 2022:

Chrome 92 Edge 92 Firefox 90 Safari 15.4 Opera 78
Apr 2021 Jul 2021 Jul 2021 Mar 2022 Aug 2021