hellojs.ru
Главная - Основы JavaScript - Функции, стрелочные функции (ES6)

Функции, стрелочные функции (ES6)

Размещено в категории "Основы JavaScript"
22.09.2024 / просмотров: 40 / комментариев: 0
Ресурсы:

Очень подробно про замыкания
Стрелочные функции
Таблица с классификацией
Замыкания изнутри




Синтаксис функции:
Код

function showFirstMessage() {
  console.log('Hello, World!');
}

showFirstMessage(); // Hello, World!

Варианты с передачей аргумента:
Код

let a = 'Всем привет!';

function showFirstMessage(text) {
  console.log(text);
}

showFirstMessage(a); // Всем привет!
showFirstMessage('Привет, мир!'); // Привет, мир!

Негласно принято, что имя функции должно быть глаголом с припиской того, что эта функция выполняет, например: showFirstMessage (показать первое сообщение).

Для написания имени функции используется формат camelCase

Анонимные функции - используются прямо здесь и сейчас и только однократно, при этом имя для функции не указывается, поэтому к ней нельзя обратиться.

Как ведут себя переменные внутри функций?

Если переменная объявлена внутри функции, снаружи она будет недоступна, так как переменные, объявленные с помощью let и const существуют только внутри блока функций.

Такие переменные называются локальными
Код

function showMyResult() {
  let a = 50; // это локальная переменная
}

console.log(a); // a is not defined

В примере ниже переменная создана глобально, а внутри функции мы пытаемся её изменить
Код

let a = 50;

function showMyResult() {
  a = 30; // присваиваем переменной новое значение
}

showMyResult();
console.log(a); // 30

Ещё пример: одноимённо названные переменные, находящиеся в разных местах, то есть, одна из них объявлена глобально, другая локально.
Код

let a = 50; // глобальная

function showMyResult() {
  let a = 30; // локальная, снаружи не видна
}

showMyResult();
console.log(a); // 50

Функция изначально ищет переменные внутри себя, а когда она их не находит, идет уровнем выше
Код

let a = 50; // глобальная

function showMyResult() {
  console.log(a); // 50
}

showMyResult();
console.log(a); // 50

В примере выше функция не нашла внутри себя переменную a, поэтому поиск пошел выше и функция обратилась к переменной a глобальной.

Замыкание - это сама функция вместе со всеми внешними переменными, которые ей доступны.

Функция может вернуть какое-то значение, для этого используется ключевое слово return, как только код доходит до return, функция завершает работу и весь код ниже уже не будет выполнен.
Код

function calc(a, b) {
  return a + b;
}

calc(4, 3); // 7
calc(2, 4); // 6  

return позволяет вернуть значение, полученное в результате работы функции, "во внешний мир"
Код

function calc(a, b) {
  return a + b;
}

let result = calc(3, 5);

console.log(result); // 8  


Классификация функций



Function declaration

Синтаксис таких функций:
Код

function funcName() {

}

Важной особенностью таких функций является то, что они существуют ещё до того, как код будет запущен.

Так как браузер, пробегаясь по странице, первым делом ищет все переменные var и все функции function declaration, это даёт возможность вызова функции до её объявления
Код

calc(3, 4);

function calc(a, b) {
  console.log(a * b); // 12
}  


Function Expression

Синтаксис этих функций
Код

let foo = function() {

}

Функция при этом помещается в переменную, поэтому вызвать такую функцию можно только после её объявления.
Код

const logger = function () {
  console.log('Hello!');
}; // обязательно точку с запятой в конце

logger(); // Hello!


Стрелочные функции (ES6)

Код

const calc = (a, b) => a + b;

Это сокращённая запись, более полно выглядит так
Код

const calc = (a, b) => { return a + b };

Cтрелочные функции не имеют так называемого контекста вызова, поэтому чаще всего их используют в обработчиках событий.

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

const calc = (a, b) => a + b;

Если же функция имеет лишь один аргумент, то допустима такая запись (без круглых скобок)
Код

const calc = a => a + 10;
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
Сайт управляется системой uCoz