Выражения встроенных функций

Функциональное выражение — это когда функция присваивается переменной. А в JavaScript это также может произойти, когда вы передаете функцию inline в качестве аргумента другой функции. Возьмем, к примеру, favoriteMovie:

// Function expression that assigns the function displayFavorite 
// to the variable favoriteMovie
var favoriteMovie = function displayFavorite(movieName) {
  console.log("My favorite movie is " + movieName);
};
// Function declaration that has two parameters: a function for displaying
// a message, along with a name of a movie
function movies(messageFunction, name) {
  messageFunction(name);
}
// Call the movies function, pass in the favoriteMovie function and name of movie
movies(favoriteMovie, "Finding Nemo");

Возвращение: Мой любимый фильм — «В поисках Немо».

Но вы могли бы обойти первое назначение функции, передав функцию встроенной функции movies().

// Function declaration that takes in two arguments: a function for displaying
// a message, along with a name of a movie
function movies(messageFunction, name) {
  messageFunction(name);
}
// Call the movies function, pass in the function and name of movie
movies(function displayFavorite(movieName) {
  console.log("My favorite movie is " + movieName);
}, "Finding Nemo");

Возвраты: Мой любимый фильм — «В поисках Немо»

Направления:

Вызовите функцию emotions(), чтобы она напечатала вывод, который вы видите ниже, но вместо передачи функции laugh() в качестве аргумента вместо этого передайте выражение встроенной функции.

emotions("happy", laugh(2)); // you can use your laugh function from the previous quizzes

Принты: «Я счастлив, ха-ха!»

function emotions(myString, myFunc) {
    console.log("I am " + myString + ", " + myFunc(2));
}
// your code goes here
// Call the emotions() function with two arguments
// Argument 1 - "happy" string
// Argument 2 - an inline function expression
emotions ('happy', function myFunc(num) {
    let result = '';
    for (let i = 0; i < num; i++) {
        result += 'ha';
    }
    result += '!';
    return result;
});