JavaScript - ES6: руковод BEGINNERS Guide to Modern JavaScript

Привет, будущие маги JavaScript! Я рад быть вашим проводником в этом захватывающем путешествии в мир ES6, революционного обновления JavaScript, которое изменило способ написания кода. Как某人, кто преподавал программирование более десяти лет, я не могу дождаться, чтобы поделиться магией ES6 с вами. Так что возьмите свои жезлы (или клавиатуры) и погружайтесь с мной в это!

JavaScript - ES6

Новые добавленные функции в ES6

ES6, также известный как ECMAScript 2015, принес JavaScript кладезь новых функций. Это как если бы JavaScript пошел в школу супергероев и вернулся с целым новым набором способностей! Давайте рассмотрим эти суперсилы по одному.

JavaScript Стрелочные функции

Стрелочные функции - это как cool и модные дяди обычных функций. Они короче, изящнее и иногда даже мощнее. Давайте посмотрим на пример:

// Старый способ
function sayHello(name) {
return "Hello, " + name + "!";
}

// Способ со стрелочной функцией
const sayHello = (name) => `Hello, ${name}!`;

console.log(sayHello("Alice")); // Вывод: Hello, Alice!

В этом примере мы преобразовали обычную функцию в стрелочную функцию. Обратите внимание, как мы исключили ключевое слово function и добавили => (толстая стрелка). Это как если бы наша функция похудела и вернулась выглядящей потрясающе!

Метод JavaScript Array find()

Метод find() - это как детектив для ваших массивов. Он ищет через массив и возвращает первый элемент, который проходит проверку. Вот как это работает:

const numbers = [1, 2, 3, 4, 5];
const firstEvenNumber = numbers.find(num => num % 2 === 0);

console.log(firstEvenNumber); // Вывод: 2

В этом случае наш метод find() ищет первый чётный номер. Он проверяет каждый номер, и как только находит такой, который divisible на 2 без остатка, он возвращает этот номер.

Метод JavaScript Array findIndex()

findIndex() - это cousin метода find(). Вместо того чтобы возвращать элемент, он возвращает индекс первого элемента, который проходит проверку. Давайте посмотрим, как это работает:

const fruits = ["apple", "banana", "cherry", "date"];
const indexOfLongFruit = fruits.findIndex(fruit => fruit.length > 5);

console.log(indexOfLongFruit); // Вывод: 1

Здесь мы ищем первый фрукт с более чем 5 буквами. "Banana" первым соответствует этому критерию, поэтому его индекс (1) возвращается.

Метод JavaScript Array from()

Array.from() - это как маг, который может превращать массивоподобные объекты или итерируемые в настоящие массивы. Это особенно полезно при работе с DOM элементами. Вот пример:

const name = "Alice";
const nameArray = Array.from(name);

console.log(nameArray); // Вывод: ["A", "l", "i", "c", "e"]

В этом случае мы превратили строку в массив отдельных символов. Pretty neat, не так ли?

Метод JavaScript Array keys()

Метод keys() возвращает Array Iterator объект с ключами массива. Это как VIP пропуск ко всем индексам вашего массива. Давайте посмотрим, как это работает:

const fruits = ["apple", "banana", "cherry"];
const keys = fruits.keys();

for (let key of keys) {
console.log(key);
}
// Вывод:
// 0
// 1
// 2

Этот метод предоставляет нам доступ к индексам нашего массива, что может быть super полезно в некоторых ситуациях.

Классы JavaScript

Классы в ES6 принесли объектно-ориентированное программирование в JavaScript в более интуитивно понятной форме. Они как чертежи для создания объектов. Давайте создадим простой класс:

class Dog {
constructor(name) {
this.name = name;
}

bark() {
return `${this.name} says woof!`;
}
}

const myDog = new Dog("Buddy");
console.log(myDog.bark()); // Вывод: Buddy says woof!

В этом примере мы создали класс Dog с конструктором и методом. Затем мы можем создавать новые объекты Dog с помощью этого класса.

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

Ключевое слово const - это как сейф для ваших переменных. Once вы поместили значение внутрь, оно надежно заперто и не может быть изменено. Это идеально для значений, которые не должны быть пер reassigned. Вот как это работает:

const PI = 3.14159;
// PI = 3; // Это вызвать бы ошибку

console.log(PI); // Вывод: 3.14159

В этом примере мы объявили PI как константу. Если бы мы попытались его перезаписать, JavaScript бы выдал ошибку.

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

let - это как более ответственный sibling var. Он предоставляет блок-область действия, что может помочь избежать многих распространенных ошибок программирования. Вот пример:

let x = 1;

if (true) {
let x = 2; // Это другая 'x'
console.log(x); // Вывод: 2
}

console.log(x); // Вывод: 1

В этом случае переменная x внутри блока if - это другая переменная, отличная от x снаружи, благодаря блок-области действия let.

Параметры по умолчанию в JavaScript

Параметры по умолчанию - это как safety nets для ваших функций. Они предоставляют значения по умолчанию для параметров, если аргументы не переданы. Давайте посмотрим, как они работают:

function greet(name = "Guest") {
return `Hello, ${name}!`;
}

console.log(greet()); // Вывод: Hello, Guest!
console.log(greet("Alice")); // Вывод: Hello, Alice!

В этом примере, если мы не предоставляем имя, функция использует "Guest" как значение по умолчанию.

Цикл JavaScript for...of

Цикл for...of - это новый, более краткий способ итерации по итерируемым объектам, таким как массивы. Это как экскурсия по вашим данным. Вот как это работает:

const fruits = ["apple", "banana", "cherry"];

for (let fruit of fruits) {
console.log(fruit);
}
// Вывод:
// apple
// banana
// cherry

Этот цикл автоматически итерирует через каждый элемент массива, делая наш код чище и читабельнее.

Параметр rest в JavaScript

Параметр rest - это как сеть, которая ловит все дополнительные аргументы, переданные функции. Он представлен тремя точками (...) после имени. Вот пример:

function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}

console.log(sum(1, 2, 3, 4)); // Вывод: 10

В этом случае ...numbers ловит все аргументы и преобразует их в массив, который мы затем суммируем.

Модули JavaScript

Модули в ES6 - это как LEGO блоки для вашего кода. Они позволяют вам.split ваш код на отдельные файлы и import/export функциональность по мере необходимости. Вот простой пример:

// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

// main.js
import { add, subtract } from './math.js';

console.log(add(5, 3)); // Вывод: 8
console.log(subtract(5, 3)); // Вывод: 2

Этот модульный подход помогает поддерживать ваш код организованным и повторно используемым.

Объекты Map JavaScript

Объекты Map - это как super-powered объекты. Они позволяют ключи любого типа и поддерживают порядок записей. Вот как они работают:

const myMap = new Map();

myMap.set('name', 'Alice');
myMap.set(1, 'number one');

console.log(myMap.get('name')); // Вывод: Alice
console.log(myMap.get(1)); // Вывод: number one

Map особенно полезны, когда вам нужно связать дополнительные данные с объектом.

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

ES6 ввел несколько новых глобальных методов. Давайте посмотрим на один из них: isFinite().

console.log(Number.isFinite(10)); // Вывод: true
console.log(Number.isFinite(Infinity)); // Вывод: false
console.log(Number.isFinite("10")); // Вывод: false

Этот метод проверяет, является ли значение конечным числом, возвращая true или false.

Новые методы JavaScript Math

ES6 также принес новые математические методы. Один из них - Math.trunc(), который удаляет десятичную часть числа:

console.log(Math.trunc(4.9)); // Вывод: 4
console.log(Math.trunc(-4.2)); // Вывод: -4

Этот метод полезен, когда вам нужно работать с целыми числами.

Новые методы JavaScript Number

Новые методы также были введены для Number. Давайте посмотрим на Number.isInteger():

console.log(Number.isInteger(10)); // Вывод: true
console.log(Number.isInteger(10.5)); // Вывод: false

Этот метод проверяет, является ли значение целым числом.

Новые свойства JavaScript Number

ES6 добавил новые свойства для Number. Вот пример с Number.EPSILON:

console.log(Number.EPSILON); // Вывод: 2.220446049250313e-16

EPSILON представляет собой наименьший интервал между двумя представляемыми числами.

JavaScript Promises

Promises - это как IOUs в JavaScript. Они представляют собой значение, которое может быть недоступно в настоящее время, но будет доступно в будущем. Вот простой пример:

const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Success!");
}, 1000);
});

myPromise.then(result => console.log(result)); // Вывод через 1 секунду: Success!

Promises жизненно важны для обработки асинхронных операций в JavaScript.

JavaScript Set Objects

Объекты Set - это как массивы, но без дубликатов. Они представляют собой коллекцию уникальных значений. Вот как они работают:

const mySet = new Set([1, 2, 3, 3, 4]);

console.log(mySet); // Вывод: Set(4) {1, 2, 3, 4}

Set автоматически удаляет дубликатные значения, что может быть super полезно в некоторых ситуациях.

Новые методы JavaScript String

ES6 ввел несколько новых методов для String. Давайте посмотрим на startsWith():

const str = "Hello, world!";

console.log(str.startsWith("Hello")); // Вывод: true
console.log(str.startsWith("world")); // Вывод: false

Этот метод проверяет, начинается ли строка с указанных символов.

JavaScript Symbol

Symbol - это новый примитивный тип в ES6. Они уникальны и неизменны, часто используются в качестве ключей свойств. Вот пример:

const mySymbol = Symbol("mySymbol");
const obj = {
[mySymbol]: "Hello, Symbol!"
};

console.log(obj[mySymbol]); // Вывод: Hello, Symbol!

Symbol полезны для создания нестроковых ключей свойств в объектах.

JavaScript Spread Operator

Spread operator (...) это как magic wand, который может распространять массив на отдельные элементы. Он очень универсален. Вот пример:

const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];

console.log(arr2); // Вывод: [1, 2, 3, 4, 5]

Spread operator распространил arr1 на отдельные элементы в arr2.

Заключение

Уф! Мы covered много ground, не так ли? ES6 принес JavaScript так много захватывающих функций, и мы только поцарапали surface. Помните, ключ к овладению этими концепциями - это практика. Так что идите и кодируйте! Экспериментируйте с новыми функциями, ломайте вещи, чините их и получайте удовольствие от процесса. Before вы знаете это, вы будете писать modern JavaScript как pro!

Вот таблица, резюмирующая все методы, о которых мы говорили:

Метод Описание
Arrow Functions Краткая запись для функциональных выражений
Array.find() Возвращает значение первого элемента в массиве, который удовлетворяет заданному тесту
Array.findIndex() Возвращает индекс первого элемента в массиве, который удовлетворяет заданному тесту
Array.from() Создает новый массив из массивоподобного или итерируемого объекта
Array.keys() Возвращает новый Array Iterator объект с ключами массива
Class Шаблон для создания объектов, предоставляющий более чистый синтаксис для объектно-ориентированного программирования
const Объявляет блок-ограниченную, неизменную константу
let Объявляет блок-ограниченную, локальную переменную
Default Parameters Позволяют�始化 named параметры значениями по умолчанию, если аргументы не переданы
for...of Создает цикл итерации по итерируемым объектам
Rest Parameter Позволяет функции принимать неопределенное количество аргументов в виде массива
Modules Позволяют.split ваш код на отдельные файлы и import/export функциональность по мере необходимости
Map Коллекция ключевых данных элементов, аналогичная объекту, но позволяет ключи любого типа
Number.isFinite() Определяет, является ли переданное значение конечным числом
Math.trunc() Удаляет десятичную часть числа
Number.isInteger() Определяет, является ли переданное значение целым числом
Promise Представляет собой значение, которое может быть недоступно в настоящее время, но будет доступно в будущем
Set Коллекция уникальных значений
String.startsWith() Проверяет, начинается ли строка с указанных символов
Symbol Уникальный и неизменный примитивный тип
Spread Operator Позволяет распространять массив на отдельные элементы

Счастливого кодирования и пусть ES6 будет с вами!

Credits: Image by storyset