Что в мире представляет собой встроенную функцию в Javascript и в каких случаях может возникнуть необходимость ее использования?

1

Вот пример, который дает Udacity:

var favoriteMovie = function displayFavorite(movieName) {
  console.log("My favorite movie is " + movieName);
};

function movies(messageFunction, name) {
  messageFunction(name);
}

movies(favoriteMovie, "Finding Nemo");

возвращается: Моим любимым фильмом является "Нахождение Немо".

  1. Как связаны эти две функции?
  2. Почему кто-то выбирает такой тип кодирования, чтобы идти о чем-то, что кажется, что это может быть более простым? Я просто не понимаю, и мне нужен более тщательный ответ, чем я получал от курса.
  • 3
    Это не похоже на пример встроенной функции. Кажется, это показывает использование функций высшего порядка.
  • 1
    будет трудно обнаружить преимущества абстракции на простых примерах, но в сложном коде это может помочь организовать, повторно использовать и протестировать небольшие кусочки сложной системы; читайте о «внедрении зависимости»
Показать ещё 2 комментария
Теги:
function
inline

2 ответа

0

Как заявил Карциген, это не пример встроенных функций. Встроенные функции - это выражения функций. То, что вы сделали, является примером оператора функции.

Вот пример встроенной функции:

 console.log(function(movieName){
        return("My favorite movie is " + movieName);
    }("Finding Nemo"));

Что касается операторов функций, как в вашем примере, они обычно используются для абстракции. Из книги " Красноречивый JavaScript", глава 5:

абстракция

В контексте программирования эти виды словарей обычно называются абстракциями. Абстракции скрывают детали и дают нам возможность говорить о проблемах на более высоком (или более абстрактном) уровне.

В качестве аналогии сравните эти два рецепта супа гороха:

Поместите 1 стакан сушеного горошка на человека в контейнер. Добавьте воду, пока горох не будет хорошо закрыт. Оставьте горох в воде не менее 12 часов. Выньте горох из воды и положите их в кастрюлю. Добавьте 4 чашки воды на человека. Накройте кастрюлю и держите горох кипящим в течение двух часов. Возьмите половину лука на человека. Разрежьте его на куски ножом. Добавьте его к гороху. Возьмите стебель сельдерея на человека. Разрежьте его на куски ножом. Добавьте его к гороху. Возьмите морковь на человека. Разрежьте его на кусочки. С ножом! Добавьте его к гороху. Готовьте еще 10 минут.

И второй рецепт:

На человека: 1 чашка сушеных расколотых горошек, половину нарезанного лука, стебель сельдерея и морковь.

Замочите горох на 12 часов. Варить на медленном огне 2 часа в 4 стакана воды (на человека). Чоп и добавить овощи. Готовьте еще 10 минут.

Второй - короче и легче интерпретировать. Но вам нужно понять еще несколько слов, связанных с приготовлением пищи, - вымочить, варить, нарезать и, я думаю, овощ.

При программировании мы не можем полагаться на все слова, которые нам нужно ждать в словаре. Таким образом, вы можете попасть в образец первого рецепта - выработать точные шаги, которые компьютер должен выполнять, один за другим, слепым к высшим концепциям, которые они выражают.

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

  • 0
    На самом деле displayFavorite - это выражение функции. И я думаю, что вы имели в виду «заявление», а не «заявление».
  • 0
    Операторы функций были очень специфическим нестандартным расширением синтаксиса и не устарели в пользу (возможно, блочной области) объявлений функций.
0

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

function compare(a, b) {
    return a < b;
}

в одном случае, чтобы отсортировать вещи по возрастанию и:

function compare(a, b) {
    return a.name > b. name;
}

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

  • 0
    Извините за задержку ответа! Udacity заявляет в своем вступлении к встроенным функциям: «Выражение функции - это когда функция назначается переменной. И в JavaScript это также может происходить, когда вы передаете функцию, встроенную в качестве аргумента, другой функции». И это было все, что я получил, наряду с примером, который я привел в вопросе.
  • 0
    Спасибо за все объяснения! Я вижу, что потребуется немного больше изучения, прежде чем я думаю, что полностью пойму использование и логику этой концепции - но я определенно начинаю понимать ее лучше. Ответ горохового супа, в частности, помог понять идею о том, что разработчики должны иметь в виду при написании кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню