Вот пример, который дает Udacity:
var favoriteMovie = function displayFavorite(movieName) {
console.log("My favorite movie is " + movieName);
};
function movies(messageFunction, name) {
messageFunction(name);
}
movies(favoriteMovie, "Finding Nemo");
возвращается: Моим любимым фильмом является "Нахождение Немо".
Как заявил Карциген, это не пример встроенных функций. Встроенные функции - это выражения функций. То, что вы сделали, является примером оператора функции.
Вот пример встроенной функции:
console.log(function(movieName){
return("My favorite movie is " + movieName);
}("Finding Nemo"));
Что касается операторов функций, как в вашем примере, они обычно используются для абстракции. Из книги " Красноречивый JavaScript", глава 5:
абстракция
В контексте программирования эти виды словарей обычно называются абстракциями. Абстракции скрывают детали и дают нам возможность говорить о проблемах на более высоком (или более абстрактном) уровне.
В качестве аналогии сравните эти два рецепта супа гороха:
Поместите 1 стакан сушеного горошка на человека в контейнер. Добавьте воду, пока горох не будет хорошо закрыт. Оставьте горох в воде не менее 12 часов. Выньте горох из воды и положите их в кастрюлю. Добавьте 4 чашки воды на человека. Накройте кастрюлю и держите горох кипящим в течение двух часов. Возьмите половину лука на человека. Разрежьте его на куски ножом. Добавьте его к гороху. Возьмите стебель сельдерея на человека. Разрежьте его на куски ножом. Добавьте его к гороху. Возьмите морковь на человека. Разрежьте его на кусочки. С ножом! Добавьте его к гороху. Готовьте еще 10 минут.
И второй рецепт:
На человека: 1 чашка сушеных расколотых горошек, половину нарезанного лука, стебель сельдерея и морковь.
Замочите горох на 12 часов. Варить на медленном огне 2 часа в 4 стакана воды (на человека). Чоп и добавить овощи. Готовьте еще 10 минут.
Второй - короче и легче интерпретировать. Но вам нужно понять еще несколько слов, связанных с приготовлением пищи, - вымочить, варить, нарезать и, я думаю, овощ.
При программировании мы не можем полагаться на все слова, которые нам нужно ждать в словаре. Таким образом, вы можете попасть в образец первого рецепта - выработать точные шаги, которые компьютер должен выполнять, один за другим, слепым к высшим концепциям, которые они выражают.
Он должен стать второй натурой, для программиста, чтобы заметить, когда концепция просит отвлечься от нового слова.
displayFavorite
- это выражение функции. И я думаю, что вы имели в виду «заявление», а не «заявление».
Канонический пример для передачи функции состоит в том, чтобы разрешить использование одного алгоритма для сортировки нескольких способов. Ты можешь иметь:
function compare(a, b) {
return a < b;
}
в одном случае, чтобы отсортировать вещи по возрастанию и:
function compare(a, b) {
return a.name > b. name;
}
чтобы отсортировать вещи по имени в порядке убывания. Тогда вам просто нужно написать алгоритм сортировки, в котором вы передаете функцию сравнения.