НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

JS Підручник

JS Старт JS Інтро JS Установка JS Виведення JS Інструкції JS Синтаксис JS Коментарі JS Змінні JS Ключове слово Let JS Ключове слово Const JS Оператори JS Арифметичні JS Присвоєння JS Типи даних JS Функції JS Об’єкти JS Події JS Рядки JS Рядкові методи JS Рядковий пошук JS Рядкові шаблони JS Числа JS Числові методи JS Масиви JS Методи масиву JS Сортування масиву JS Ітерація масиву JS Масив Const JS Дати JS Формати дат JS Методи отримання дат JS Методи встановлення дат JS Математичні JS Рандомні JS Булеві JS Порівняння JS Умови JS Switch JS Цикл For JS Цикл For In JS Цикл For Of JS Цикл While JS Break & Continue JS Ітерації JS Сети (Набори) JS Мапи JS Typeof JS Перетворення типів JS Побітові JS Регулярні вирази JS Помилки JS Область дії JS Хостинг JS Use Strict JS Ключове слово this JS Функція стрілки JS Класи JS Модулі JS JSON JS Відладка JS Гід по стилю JS Кращі практики JS Поширені помилки JS Продуктивність JS Зарезервовані слова

JS Версії

JS Версії JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE/Edge JS Історія

JS Об’єкти

Визначення об’єктів Властивості об’єкта Методи об’єкта Відображення об’єкта Доступ до об’єктів Конструктори об’єктів Прототипи об’єктів Ітеровані об’єкти Сети (Набори) об’єктів Мапи (Карти) об’єктів Довідник об’єктів

JS Функції

Визначення функції Параметри функції Виклик функції Функція call() Функція apply() Функція bind() Закриття функції

JS Класи

Класи. Інтро Успадкування класу Статичні методи

JS Асинхроний

Зворотні виклики Асинхроний Проміси Async/Await

JS HTML DOM

DOM Вступ DOM Методи DOM Документ DOM Елементи DOM HTML DOM Форми DOM CSS DOM Анімація DOM Події DOM Слухач подій DOM Навігація DOM Вузли DOM HTMLCollection DOM NodeList

JS Браузер BOM

JS Вікно JS Скрін JS Локація JS Історія JS Навігатор JS Виринаюче сповіщення JS Таймінг JS Куки

JS Веб API

Веб API Вступ Веб-форми API Веб-історія API Веб-сховище API Веб-воркер API Веб-виборка API Веб-геолокація API

JS AJAX

AJAX Вступ AJAX XMLHttp AJAX Запит AJAX Відповідь сервера AJAX XML Файл AJAX PHP AJAX ASP AJAX База даних AJAX Додатки AJAX Приклади

JS JSON

JSON Вступ JSON Синтаксис JSON та XML JSON Типи даних JSON Аналіз JSON Stringify JSON Об’єкти JSON Масиви JSON Сервер JSON PHP JSON HTML JSON JSONP

JS та jQuery

jQuery Селектори jQuery HTML jQuery CSS jQuery DOM

JS Графіка

JS Графіка JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

JS Приклади

JS Приклади JS HTML DOM JS HTML Input JS HTML Об’єкти JS HTML Події JS Браузер JS Редактор JS Вправи JS Вікторина JS Сертифікат

JS Довідники

JavaScript Об’єкти HTML DOM Об’єкти

JavaScript. Уроки W3Schools для початківців українською мовою

En

Javascript ES6

ECMAScript 2015 став другою великою версією JavaScript.

ECMAScript 2015 також відомий як ES6 та ECMAScript 6.

В цьому розділі описані найбільш важливі функції ES6.

Нові можливості ES6


Підтримка браузерами ES6 (2015)

Safari 10 та Edge 14 були першими браузерами, що повністю підтримували ES6:

Chrome 58 Edge 14 Firefox 54 Safari 10 Opera 55
Jan 2017 Aug 2016 Mar 2017 Jul 2016 Aug 2018

JavaScript Ключове слово let

Ключове слово let дозволяє оголосити змінну з областю видимості блоку.

Приклад

var x = 10;
// Тут x дорівнює 10
{
  let x = 2;
  // Тут x дорівнює 2
}
// Тут x дорівнює 10
Спробуйте самі »

Докладніше про ключове слово let ви можете дізнатись в розділі: JavaScript Let.


JavaScript Ключове слово const

Ключове слово const дозволяє оголосити константу (JavaScript змінну з постійним значенням).

Константи аналогічні let змінним, за виключенням того, що значення не можна змінити.

Приклад

var x = 10;
// Тут x дорівнює 10
{
  const x = 2;
  // Тут x дорівнює 2
}
// Тут x дорівнює 10
Спробуйте самі »

Докладніше про ключове слово const ви можете дізнатись в розділі JavaScript Const.


Функції стрілки

Функції стрілок (стрілкові функції) дозволяють використовувати короткий синтаксис для написання функціональних виразів.

Вам не потрібні ключові слова function, return та фігурні скобки.

Приклад

// ES5
var x = function(x, y) {
  return x * y;
}

// ES6
const x = (x, y) => x * y;
Спробуйте самі »

У стрілкових функцій немає власного this. Вони не підходять для визначення методів об’єкту.

Стрілкові функції не підіймаються. Вони мають бути визначені до їх використання.

Використання const безпечніше, ніж використання var, оскільки вираз функції завжди є постійним значенням.

Ви можете опустити ключове слово return та фігурні скобки лише в тому випадку, якщо функція є одною інструкцією. Тому рекомендується завжди використовувати їх:

Приклад

const x = (x, y) => { return x * y };
Спробуйте самі »

Додаткову інформацію про стрілкові функції див. в розділі: JavaScript Функція стрілок.


Цикл For/Of

JavaScript інструкція for/of перебирає значення ітерованих об’єктів.

for/of дозволяє перебирати ітеровані структури даних, такі як масиви, рядки, мапи, списки вузлів і т. д.

Цикл for/of має наступний синтаксис:

for (змінної of ітерованого) {
  // блок коду, що має бути виконано
}

Змінна - Для кожної ітерації змінній присвоюється значення наступної властивості. Змінна може бути оголошена за допомогою const, let або var.

Ітероване - Об’єкт з ітеративними властивостями.

Цикл по масиву

Приклад

const cars = ["BMW", "Volvo", "Mini"];
let text = "";

for (let x of cars) {
  text += x + " ";
}
Спробуйте самі »

Цикл по рядку

Приклад

let language = "JavaScript";
let text = "";

for (let x of language) {
    text += x + " ";
}
Спробуйте самі »

Докладніше в розділі: JavaScript Цикл For/In/Of.


JavaScript Об’єкти мапи

Можливість використовувати об’єкт як ключа - важлива особливість мапи.

Приклад

// Створення об’єтів
const apples = {name: 'Apples'};
const bananas = {name: 'Bananas'};
const oranges = {name: 'Oranges'};

// Створення нової мапи
const fruits = new Map();

// Додавання нових елементів на мапі
fruits.set(apples, 500);
fruits.set(bananas, 300);
fruits.set(oranges, 200);
Спробуйте самі »

Дізнайтесь більше про об’єкти мапи в розділі: JavaScript Map().


JavaScript Об’єкти Сету

Приклад

// Створити Сет
const letters = new Set();

// Додати кілька значень в Сет
letters.add("a");
letters.add("b");
letters.add("c");
Спробуйте самі »

Докладніше про об’єкти Сету див. в розділі: JavaScript Set().


JavaScript Класи

JavaScript класи - це шаблони для JavaScript об’єктів.

Використовуйте ключове слово class для створення класу.

Завжди додавайте метод з іменем constructor():

Синтаксис

class ClassName {
  constructor() { ... }
}

Приклад

class Car {
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }
}

В наведеному вище прикладі створюється клас з іменем "Car".

В класу є дві початкових властивості: "name" (назва) та "year" (рік).

JavaScript клас не є об’єктом.

Він є шаблоном для JavaScript об’єктів.


Використання класу

Коли у вас є клас, ви можете використовувати його для створення об’єктів:

Приклад

const myCar1 = new Car("Ford", 2014);
const myCar2 = new Car("Audi", 2019);

Спробуйте самі »

Докладніше про класи в розділі: JavaScript Класи.


JavaScript Проміси

Проміс - це JavaScript об’єкт, що пов’язує "Виробничий код" та "Споживчий код".

"Виробничий код" може зайняти деякий час та "Споживчий код" має дочекатися результату.

Синтаксис промісу

const myPromise = new Promise(function(myResolve, myReject) {
// "Виробничий код" (може зайняти деякий час)

  myResolve(); // у випадку успіху
  myReject();  // коли помилка
});

// "Споживчий код" (має дочекатися виконання промісу).
myPromise.then(
  function(value) { /* код у випадку успіху */ },
  function(error) { /* код, якщо якась помилка */ }
);

Приклад використання промісу

const myPromise = new Promise(function(myResolve, myReject) {
  setTimeout(function() { myResolve("I love You !!"); }, 3000);
});

myPromise.then(function(value) {
  document.getElementById("demo").innerHTML = value;
});
Спробуйте самі »

Докладніше про проміси в розділі: JavaScript Проміси.


Тип Symbol (символ)

JavaScript Symbol - це примітивний тип даних, такий самий, як Number (число), String (рядок) або Boolean (булеве значення).

Він являє собою унікальний "прихований" ідентифікатор, до якого ніякий інший код не може випадково отримати доступ.

Наприклад, якщо різні кодувальники хочуть додати властивість person.id до об’єкту person, що належить сторонньому коду, вони можуть змішувати значення один одного.

Використання Symbol() для створення унікальних ідентифікаторів розв’язує цю проблему:

Приклад

const person = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  eyeColor: "blue"
};

let id = Symbol('id');
person[id] = 140353;
// тепер Person[id] = 140353
// але person.id все ще не визначено
Спробуйте самі »

Символи завжди унікальні.

Якщо ви створите два символи з однаковим описом, вони будуть мати різні значення.

Symbol("id") == Symbol("id") // false

Значення параметрів за замовчуванням

ES6 дозволяє параметрам функції мати значення за замовчуванням.

Приклад

function myFunction(x, y = 10) {
 // y дорівнює 10, якщо не передано або не визначено
  return x + y;
}
myFunction(5); // поверне 15
Спробуйте самі »

Функція Rest Parameter

Параметр rest (...) дозволяє функції обробляти невизначену кількість аргументів як масив:

Приклад

function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);
Спробуйте самі »

String.includes()

Метод includes() поверне true якщо рядок містить вказане значення, інакше false:

Приклад

let text = "Hello world, welcome to the universe.";
text.includes("world")    // Поверне true
Спробуйте самі »

String.startsWith()

Метод startsWith() поверне true якщо рядок починається зі вказаного значення, інакше false:

Приклад

let text = "Hello world, welcome to the universe.";

text.startsWith("Hello")   // Поверне true
Спробуйте самі »

String.endsWith()

Метод endsWith() поверне true якщо рядок закінчується вказаним значенням, інакше false:

Приклад

var text = "John Doe";
text.endsWith("Doe")    // поверне true
Спробуйте самі »

Array.from()

Метод Array.from() поверне об’єкт масиву з будь-якого об’єкту з властивістю довжини або будь-яким ітерованим (що повторюється) об’єктом.

Приклад

Створити масив із рядка:

Array.from("ABCDEFG")   // поверне [A,B,C,D,E,F,G]
Спробуйте самі »

Array.Keys()

Метод Array.keys() поверне об’єкт Array Iterator з ключами масиву.

Приклад

Створити об’єкт Array Iterator, що містить ключи масиву:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
const keys = fruits.keys();

let text = "";
for (let x of keys) {
  text += x + "<br>";
}
Спробуйте самі »

Array.find()

Метод find() повертає значення першого елементу масиву, який передає тестову функцію.

В цьому прикладі знаходить (повертає значення) перший елемент, розмір якого понад 18:

Приклад

const numbers = [4, 9, 16, 25, 29];
let first = numbers.find(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
Спробуйте самі »

Зверніть увагу, що функція приймає 3 аргументи:

  • Значення елемента
  • Індекс елемента
  • Сам масив

Array.findIndex()

Метод findIndex() поверне індекс першого елемента масиву, що передає тестову функцію.

В цьому прикладі виконується пошук індексу першого елемента понад 18:

Приклад

const numbers = [4, 9, 16, 25, 29];
let first = numbers.findIndex(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
Спробуйте самі »

Зверніть увагу, що функція приймає 3 аргументи:

  • Значення елемента
  • Індекс елемента
  • Сам масив

Нові математичні методи

ES6 додав наступні методи для математичного об’єкту:

  • Math.trunc()
  • Math.sign()
  • Math.cbrt()
  • Math.log2()
  • Math.log10()

Метод Math.trunc()

Метод Math.trunc(x) повертає цілочислову частину x:

Приклад

Math.trunc(4.9);    // поверне 4
Math.trunc(4.7);    // поверне 4
Math.trunc(4.4);    // поверне 4
Math.trunc(4.2);    // поверне 4
Math.trunc(-4.2);    // поверне -4
Спробуйте самі »

Метод Math.sign()

Метод Math.sign(x) поверне, якщо x негативний, нульовий або позитивний:

Приклад

Math.sign(-4);    // поверне -1
Math.sign(0);    // поверне 0
Math.sign(4);    // поверне 1
Спробуйте самі »

Метод Math.cbrt()

Метод Math.cbrt(x) поверне кубічний корінь x:

Приклад

Math.cbrt(8);    // поверне 2
Math.cbrt(64);    // поверне 4
Math.cbrt(125);    // поверне 5
Спробуйте самі »

Метод Math.log2()

Метод Math.log2(x) поверне логарифм x по основі 2:

Приклад

Math.log2(2);    // поверне 1
Спробуйте самі »

Метод Math.log10()

Math.log10(x) поверне логарифм x по основі 10:

Приклад

Math.log10(10);    // поверне 1
Спробуйте самі »

Нові властивості числа

ES6 додав наступні властивості до об’єкту Number (Число):

  • EPSILON
  • MIN_SAFE_INTEGER
  • MAX_SAFE_INTEGER

Приклад

let x = Number.EPSILON;
Спробуйте самі »

Приклад

let x = Number.MIN_SAFE_INTEGER;
Спробуйте самі »

Приклад

let x = Number.MAX_SAFE_INTEGER;
Спробуйте самі »

Нові методи числа

ES6 додав 2 нових методи до об’єкту Number (Число):

  • Number.isInteger()
  • Number.isSafeInteger()

Метод Number.isInteger()

Метод Number.isInteger() поверне true якщо аргумент є цілим числом.

Приклад

Number.isInteger(10);        // поверне true
Number.isInteger(10.5);      // поверне false
Спробуйте самі »

Метод Number.isSafeInteger()

Безпечне ціле число - це ціле число, яке може бути точно представлено як число подвійної точності.

Метод Number.isSafeInteger() поверне true, якщо аргумент є безпечним цілим числом.

Приклад

Number.isSafeInteger(10);    // поверне true
Number.isSafeInteger(12345678901234567890);  // поверне false
Спробуйте самі »

Безпечні цілі числа - це цілі числа від -(253 - 1) до +(253 - 1).
Це безпечно: 9007199254740991. Це не безпечно: 9007199254740992.


Нові глобальні методи

ES6 додав 2 нових методи глобального числа:

  • isFinite()
  • isNaN()

Метод isFinite()

Глобальний метод isFinite() поверне false якщо аргумент має значення Infinity або NaN.

Інакше повернеться true:

Приклад

isFinite(10/0);       // поверне false
isFinite(10/1);       // поверне true
Спробуйте самі »

Метод isNaN()

Глобальний метод isNaN() поверне true якщо аргумент має NaN. Інакше поверне false:

Приклад

isNaN("Hello");       // поверне true
Спробуйте самі »