Ошибка в функции(undefined)

  • По идеи скрипт должен вывести одно сообщение 'Опа',
  • но после него alert выводит undefined.
  • Как устранить этот баг?

function opa(){
alert('Опа');
};

alert(opa());


Ответы (3 шт):

Автор решения: Igor

function opa() {
  return 'Опа';
}

alert(opa());

→ Ссылка
Автор решения: Vyacheslav Kuchmisty

К примеру: result = prompt(title, [default]); default - необязательное значение, есть одно но. Второй параметр является необязательным, но если не указать его, то Internet Explorer установит значение "undefined" в поле для ввода.

→ Ссылка
Автор решения: ryzen

В Javascript функция может вернуть результат, который будет передан в вызвавший её код, а может выполнять другое любое действия не возвращая результат работы функции.

Для возврата значения используется ключевое слово return.
P.S: Весь код на следующей строке после return; - будет игнорироваться. Подробнее на MDN.

К примеру есть функция sum:

function sum (a, b) {
  return a + b;
}

console.log(sum(2, 2))

Как видите, при вызове, функция вернёт сумму аргументов a и b. Чтобы наглядно это увидеть, мы вызываем console.log(), и первым параметром передаем функцию sum с аргументами 2 и 2 И так, рассмотрим ваш пример.

Вы хотите, чтобы при вызове функции alert, у вас вывелось сообщение на экран.
Рассмотрим ваш код:

function opa(){ // декларируем функцию
  alert('Опа'); // вызываем alert с сообщением Опа
}; // закрываем блок функции

/**
  * здесь, вы вызываете alert, который сам по себе уже выводит сообщения на экран, 
  * однако вы передаете в него функцию, которая ничего не возвращает, а всего-лишь 
  * вызывает еще один alert с сообщением Опа, в итоге вы ведите два сообщения,
  * первое сообщение из функции opa, второе это уже вызов alert вне функции opa
 */
alert(opa());

Правильнее в данной ситуации написать вот так
Код от Igor:

function opa() { // декларируем функцию
  return 'Опа'; // вовзращаем строку "Опа"
} // закрываем блок функции

alert(opa()); // вызываем alert, первым параметром передаем вызов функции opa

Итак, разбираемся. Вызываем alert, внутри alert находится еще одна функция - вызываем её, видим return "Опа", возвращаем значение наверх и теперь уже функция alert выведет вам сообщение, которое вернула функция.

Если хотите изучать javascript, вам понадобятся такие ресурсы как MDN и learn.javascript.ru.
Надеюсь помог, удачи!

→ Ссылка