Параметры передаваемых функций в JavaScript

Пусть у нас есть функция test, которая параметром принимает другую функцию и в консоль выводит результат работы этой переданной функции:

javascriptfunction test(func) {
  console.log( func() );
}

Пусть переданная функция func параметром принимает число и что-то с ним делает. Передадим ей, например, число 3:

javascriptfunction test(func) {
  console.log( func(3) );
}

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

В результате всего этого наша конструкция выведет квадрат числа 3, то есть 9:

javascript// Выведет 9:
test(
  function(num) {
    return num * num;
  }
);

function test(func) {
  console.log(func(3));
}

Оформим код более изящно:

javascript// Выведет 9:
test(function(num) {
  return num * num;
});

function test(func) {
  console.log(func(3));
}
Задание 1

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

Задание 2

Переделайте ваш код так, чтобы передаваемая функция была не анонимной, а была определена как Function Declaration с именем func.

Задание 3

Переделайте передаваемую функцию на Function Expression с тем же именем func.

Задание 4

Пусть передаваемая функция теперь принимает два параметра и возвращает их сумму. При вызове передаваемой функции внутри test передайте в передаваемую функцию число 2 и число 3. Выведите результат.