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

На самом деле это не просто пропущенная скобка.

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

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

console.log(‘Держите случайное число: ‘ Math.random());

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

❌ SyntaxError: missing ) after formal parameters

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

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

  1. Браузер по скобкам понял, что console.log() — это функция.
  2. Нашёл строку ‘Держите случайное число: ‘.
  3. Понял, что с ней больше ничего не нужно делать, потому что после неё нет никаких команд работы со строками.
  4. Выяснил, что у console.log должен быть только один параметр при вызове.
  5. Поискал закрывающую скобку сразу после строки.
  6. Не нашёл её и выдал ошибку.

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

console.log(‘Держите случайное число: ‘ + Math.random());

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

Чтобы ошибка исчезла, вам нужно:

  1. Узнать, сколько параметров должно быть у функции, с которой вы работаете.
  2. Посчитать, сколько параметров вы передаёте в функцию, и ничего ли не пропущено при записи.
  3. Внимательно посмотреть на строки, которые вы передаёте. Часто бывает такое, что их забывают сложить между собой или ставят не те кавычки.

По поводу кавычек разберём чуть подробнее. Допустим, мы хотим написать скрипт, который вставляет код в нужное нам место на HTML-странице, получая часть данных из PHP:

$(“.mfp-bottom-bar”).prepend(<div class=’hidden-xs’><
?php if ($quantity <= 0 && $status ) { ?><button type=’button’
class=’btn-instock’ onclick=

instock.add(‘<?php echo $product_id; ?>’);”
data-product-id='<?php echo $product_id; ?>’></div>”);

Ошибка тут в том, что всё, что находится между двух парных кавычек, воспринимается как одна строка. А нужная нам функция как раз и принимает ровно одну строку как аргумент. Она встречает открывающие парные кавычки, понимает, что перед ней строка, находит закрывающие парные кавычки и не знает, что делать с остальным текстом. Проблема в том, что у нас в середине строки тоже есть двойные кавычки, которая функция принимает за закрывающие. Чтобы она их игнорировала, кавычки экранируют слэшем:\”. Тогда функция их пропустит и будет ждать нормальные закрывающие кавычки:

$(“.mfp-bottom-bar”).prepend(<div
class=’hidden-xs’><?php if ($quantity <= 0 && $status )
{ ?><button type=’button’ class=’btn-instock’
onclick=\”instock.add(‘<?php echo $product_id; ?>’);\”
data-product-id='<?php echo $product_id; ?>’></div>

);

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

Сможете найти ошибку в нашем коде?

var CircleOptions = {
  posBall: {
    x: 160,
    y: 180
  },
  radius: 40,
  angle: 80,
  velocityX: 1,
  velocityY: 1
};

function CircleCoordinates(CircleOptions.posBall.x, CircleOptions.posBall.y, CircleOptions.radius) {
  var left = CircleOptions.posBall.x - CircleOptions.radius,
    top = CircleOptions.posBall.y + CircleOptions.radius,
    right = CircleOptions.posBall.x + CircleOptions.radius,
    bottom = CircleOptions.posBall.y - CircleOptions.radius;
};

Корректор

Ирина Михеева

Иллюстрация

Виталий Вебер

Вёрстка

Мария Дронова

Соцсети и вот это всё

Виталий Вебер

Не ошибался

Родион Скрябин

Через год — лучше работа, выше зарплата
В «Яндекс Практикуме» становятся разработчиками с нуля. Выберите язык — веб, Python, Java, C++ — и учитесь. Джуны зарабатывают от 80 000 ₽, мидлы — от 150 000 ₽. Дальше — программы трудоустройства и компенсация, если пойдёте в Яндекс.
Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата
Вам может быть интересно
Uncaught SyntaxError: Unexpected end of input — что это значит?
Uncaught SyntaxError: Unexpected end of input — что это значит?

Скорее всего, вы забыли закрыть скобки при объявлении функции.

easy
ReferenceError: math is not defined — что это означает
ReferenceError: math is not defined — что это означает

Противная и неочевидная ошибка, которую очень легко исправить.

medium
Uncaught TypeError: Cannot read property — что это означает
Uncaught TypeError: Cannot read property — что это означает

Нельзя прочитать то, чего нет.

medium
Кэширование API на Python: от lru_cache до Redis на практике
Кэширование API на Python: от lru_cache до Redis на практике

Простое решение для медленных эндпоинтов

medium
Делаем свой блокировщик любой рекламы за 3 минуты
Делаем свой блокировщик любой рекламы за 3 минуты

Хакерский метод победить рекламодателей.

easy
Ещё больше полезных CSS-команд
Ещё больше полезных CSS-команд

Короткие и мощные.

hard
Красивые ссылки на вашем сайте
Красивые ссылки на вашем сайте

Меняем стандартное подчёркивание на дизайнерское.

medium
Что означает ошибка SyntaxError: Unexpected token ‘{‘. Expected ‘)’ to end an ‘if’ condition
Что означает ошибка SyntaxError: Unexpected token ‘{‘. Expected ‘)’ to end an ‘if’ condition

Простая ошибка, которую легко допустить и легко исправить в коде на JavaScript

easy
LangChain: что это такое и как построить на нём AI-агента
LangChain: что это такое и как построить на нём AI-агента

Собираем агента, который сам решает, когда вызвать Python, а когда достаточно ответа модели

medium
easy