Дисциплины - Проектирование динамических страниц

Основы JavaScript в Проектировании динамических страниц - Функции

Способы вызова функций

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

Существуют разные способы создания функций.

Простая функция

Простая функция объявляется с помощью ключевого слова function

function log(){
}

Функция первого класса

Это выражение всего лишь означает, что в JavaScript функции имеют тот же статус, что и объекты: обладают типом Object; их можно задавать как значение переменной; их можно передавать и возвращать по ссылке, как любые другие переменные.

var log = function(mess){
 console.log(mess);
}

Стрелочная функция

В JavaScript имеется возможность создавать функции без ключевого слова function:

(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
// эквивалентно: (param1, param2, …, paramN) => { return expression; }

Круглые скобки не обязательны для единственного параметра:

(singleParam) => { statements }
singleParam => { statements }

Функция без параметров:

() => { statements }
() => expression
// Эквивалентно: () => { return expression; }

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

params => ({foo: bar})

Функция объекта

Функция может быть частью объекта:

const obj = {
 message: "test test test",
 log(mess){
   console.log(mess);
 }
}

Функция массива

Функция может быть элементом массива:

const message = [
 "test test",
 message => console.log(message),
 "test2 test2",
  message => console.log(message),
]

Функция как аргумент другой функции

Функции подобно другим переменным, могут отправляться функциям в качестве аргументов:

 const iner = logger => logger("test");
 iner(message=>console.log(message);)

Функция как результат функции

Они, также как и другие переменные могут возвращаться из других функций:

var createScreem = function(logger){
 return function(message){
  logger(message.toUpperCase() + '!');
 }
}
const scream = createScreem(message =>  console.log(message));
scream('Create returns function');

Оператор спред

Поверхностное копирование (clone) и слияние (merge) можно объединить в одну операцию. Это позволяет "обновлять" объекты в функциональном стиле, другими словами, мы создаем новые объекты на основе старых, вместо их обновления.

В современном JavaScript добавили специальный оператор, который позволяет выполнять ту же задачу немного короче и, главное, нагляднее. Он называется spread оператор (на русском его так и называют "спред оператор"). Простое поверхностное копирование с помощью спреда.

Ниже пример такой операции:

const copyOfUser = { ...user };

Spread оператор – это три точки перед именем переменной (или константы), внутри определения объекта. Он раскладывает соответствующий объект внутри нового объекта. С его помощью можно получить только копию, он не может изменять существующие объекты.

С помощью spread оператора легко расширять новые объекты дополнительными данными:

const user = { name: 'Vasya', age: 11 };

const newUser = { ...user, married: true, age: 25 };
// Возраст поменялся
console.log(newUser); // => { name: 'Vasya', married: true, age: 25 }

Всё, что появляется с правой стороны спреда, будет иметь приоритет при слиянии, аналогично тому как работает Object.assign(). В свою очередь всё что слева — имеет более низкий приоритет:

const user = { name: 'Vasya', age: 11 };

const newUser = { age: 25, married: true, ...user };
// Возраст остался тем же
console.log(newUser); // => { name: 'Vasya', married: true, age: 11 }

Свойства могут одновременно появляться как слева, так и справа от этого оператора:

const user = { name: 'Vasya', age: 11 };
const newUser = { age: 25, ...user, married: true };
// Возраст остался тем же
console.log(newUser); // => { name: 'Vasya', married: true, age: 11 }

Пример использование спреда в Array().

const arr1 = new Array(...ages);
const newarr = dist => [...dist];

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
00421-00422 ИИТ БГУИР
00423 ИИТ БГУИР
10421-10422 ИИТ БГУИР
10423 БГУИР
20421 БГУИР
30421 БГУИР
30423 БГУИР


Изображения Видео

1. JavaScript. Функциональное программирование. Лекция 2. Преобразование данных <iframe width="560" height="315" src="https://www.youtube.com/embed/EBKzRg4aTro" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
2. JavaScript. Функциональное программирование. Лекция 2 (продолжение) <iframe width="560" height="315" src="https://www.youtube.com/embed/phyt4PFk6Pc" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
3. HTML5 http://erud.by/files/books/HTML5.docx
4. ООП в JavaScript http://erud.by/object_orient_program/586
5. Фоновое видео jQuery http://johnpolacek.github.io/BigVideo.js
Учебная программа