Найти тему
Журнал «Код»

Что означает ошибка SyntaxError: missing formal parameter

Ты объявляешь функцию, но ты делаешь это без уважения.

Ситуация: допустим, вам нужна функция для чат-бота, которая реагирует на приветствия. Вы хотите, чтобы на слово «Привет» она отвечала «Здравствуйте», и пишете такую функцию:

function greet("Привет") {
let greeting = "Здравствуйте!";
return greeting;
};

Вроде всё предусмотрено, но сразу после запуска браузер выдаёт такую ошибку:

❌ SyntaxError: missing formal parameter

Что это значит: браузер говорит, что у функции отсутствуют формальные параметры, которые у неё должны быть. Проще говоря, вы что-то пропустили в объявлении функции или браузер не может понять, что же именно вы передали функции в качестве аргументов.

В нашем примере: мы объявили функцию, но вместо переменной в качестве параметра указали конкретное значение «Привет». Так делать нельзя, потому что «Привет» — это не переменная, а функции нужны аргументы, которые могут принимать разные значения. Надо было сделать так:

function greet(userInput) {
let greeting = "Здравствуйте!";
if (userInput =="Привет"){ return greeting; }
};

Как исправить ошибку SyntaxError: missing formal parameter

  1. Посмотрите, передали ли вы функции все нужные параметры при вызове или объявлении. Иногда к такой ошибке приводит простая невнимательность.
  2. Проверьте, есть ли в объявлении функции то, что переменной не является. Если есть — замените на переменные.

Например, кажется, что с этой функцией всё в порядке — при объявлении не используются уже готовые значения, а берутся PHP-переменные. Но на самом деле при такой записи функция сначала найдёт значения $result['seats_count'] и $result['booked'], и только потом продолжит работать с функцией. Как результат — ошибка SyntaxError: missing formal parameter, потому что функция сразу получила готовые значения вместо переменных:

<script type="text/javascript">
function col(<?=$result['seats_count']?>,<?=$result['booked']?>){
if((<?=$result['seats_count']?>><?=$result['booked']?>))$('.table.table-bordered.booking tbody tr').css("background-color","
# f55"); }; </script>

Попробуйте сами

Перед вами — код с этой ошибкой. Сможете её найти?