Проблема заключается в вызове вашей функции.
<script>
function changeSetting(callback) {
....
}
function displayEmail() {
return "email displayed"; // dummy value in this case
}
</script>
Представьте себе, например, запуск этого кода.
changeSetting(displayEmail()); // first the display email function is evaluated
Обратите внимание, что мы вызываем функцию displayEmail()
с паратезами ()
. Это означает, что мы собираемся запустить его и вернуть его значение return
, независимо от того, является ли оно неопределенным или в нашем случае "email displayed"
.
После оценки функции, которую вы передаете как обратный вызов, она упрощается до чего-то, что не является функцией, отсюда и ошибка. Псевдо-это «упростит» до этого.
changeSetting("email displayed"); // "email displayed" is obviously not a function
Чтобы это исправить, просто сначала не вызывайте функцию, передайте указатель на функцию, которая просто displayEmail
.
changeSetting(displayEmail);