Ситуация: вы пишете код, всё как обычно, запускаете скрипт и получаете ошибку:
❌ Uncaught SyntaxError: missing ) after argument list
Вроде бы написано, что не хватает закрывающей скобки. Вы проверяете — все скобки на месте. Проверяете остальное — кажется, что всё в порядке, потому что вы так делали сотни раз и всё работало.
Что это значит: интерпретатор действительно считает, что у вас есть незакрытая скобка, но причин у него так считать на самом деле может быть очень много.
Когда встречается: есть одна общая деталь — в синтаксисе есть ошибка, но не критичная, из-за которой падает скрипт, а мелкая, почти незаметная. Вот её и будем ловить.
Пример: обработчик jQuery
jQuery('document').ready(function () {
jQuery('button').on('click'.function(){
var value1, value2 ;
value1 = jQuery('#val1').val();
value2 = jQuery('#val2').val();
alert(value1 + value2);
});
});
При запуске браузер будет ругаться на строчку jQuery('button').on('click'.function(){
и выдавать ошибку Uncaught SyntaxError: missing ) after argument list.
Но дело не в скобке — у нас с ними всё в порядке. Дело в том, что в этом примере программист поставил точку после'click'
, хотя там нужна запятая. А если стоит точка, то браузер воспринимает function как свойство, пытается с ним разобраться, понимает, что это какое-то очень длинное свойство, которое не заканчивается закрывающей скобкой. Отсюда и просьба про скобку.
Точно так же браузер может реагировать на опечатки в названиях, пропущенные точки, неправильные кавычки и так далее. В общем, чаще всего эта ошибка говорит о том, что нужно максимально сосредоточиться и проверить каждый символ в строке с ошибкой.
Что делать с ошибкой Uncaught SyntaxError: missing ) after argument list
Здесь сложно дать какую-то общую инструкцию, потому что каждый раз всё индивидуально и дело в нюансах, но мы попробуем.
- На всякий случай действительно проверьте, не потерялась ли у вас закрывающая скобка. Маловероятно, но всё-таки.
- Проверьте код на опечатки. Если пропустить букву в команде, то браузер может воспринимать её как новую функцию с кучей параметров, после которых должна всё-таки быть закрывающая скобка.
- Посмотрите, правильно ли вы используете параметры при вызове, нужны ли внутри точки, запятые или другие скобки.
- Если есть кавычки внутри кавычек — используйте разные кавычки для внутреннего и внешнего, например так:
" Привет, это журнал 'Код' "
. - Посчитайте, все ли параметры вы передаёте при вызове. Возможно, вы пытаетесь передать в функцию что-то лишнее, например, три параметра вместо двух.
Попробуйте сами. Найдите ошибки в этих фрагментах кода:
$(document).ready(function () {
$("#anim").parents().eq(1).hover(
function () {
$(this).addClass('animated bounce');
},
function () {
$(this).removeClass('animated bounce');
},
function () {
$(this).css('animation-duration', 3s); // ❌ говорит, что тут ошибка
});
});
$.each(elements, fucntion(index, val){ // ❌ говорит, что тут ошибка
console.log(index);
console.log(val);
});
missing ) after argument list javascript: In JavaScript, the “missing) after argument list” error occurs when we make a syntactic error when calling a function, such as forgetting to split its arguments by a comma. To resolve the error, ensure that any syntax errors in the arguments list of the function invocation are corrected.
Below are the examples where this “SyntaxError: missing ) after argument list” occurs.
Case#1: Forgetting to use comma(,) or ‘+’ to separate the values
// Solving SyntaxError: missing ) after argument list Error // Here we forgot to use comma(,) or + to separate the values // while printing it on the console which leads to // SyntaxError: missing ) after argument list error console.log('x' 'y');
Output:
console.log('x' 'y'); ^^^ SyntaxError: missing ) after argument list at Module._compile (internal/modules/cjs/loader.js:723:23) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
Explanation:
Here we forgot to use comma(,) or + to separate the values while printing it on the console which leads to // SyntaxError: missing ) after argument list error
Case#2: Printing ${} without the template strings
// Here we are printing ${} without the template strings // on the console. // Hence SyntaxError: missing ) after argument list console.log('The Metadata is:' + ${string_data});
Output:
console.log('The Metadata is:' + ${string_data}); ^ SyntaxError: missing ) after argument list at Module._compile (internal/modules/cjs/loader.js:723:23) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
Explanation:
Here we are printing ${} without the template strings on the console leading to an error
Case#3: When there is no comma(,) between the arguments
// Here there is no comma(,) between arguments for separating them // so, SyntaxError: missing ) after argument list occurs mul(3 2);
Output:
mul(3 2); ^ SyntaxError: missing ) after argument list at Module._compile (internal/modules/cjs/loader.js:723:23) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
Explanation:
Here there is no comma(,) between arguments for separating them. so, SyntaxError: missing ) after argument list occurs
Case#4:
// Initialize the variables const EmpName = 'Nick'; const EmpId = 2354; // Here there is no comma(,) between arguments // so, SyntaxError: missing ) after argument list occurs console.log(EmpName EmpId);
Output:
console.log(EmpName EmpId); ^^^^^^^ SyntaxError: missing ) after argument list at Module._compile (internal/modules/cjs/loader.js:723:23) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
Case#5: When we forgot to close the bracket ) while calling a function
// Here we forgot to close the bracket ) while calling a function // Hence SyntaxError: missing ) after argument list occurs console.log("x", "y"
Output:
console.log("x", "y" ^^^ SyntaxError: missing ) after argument list at Module._compile (internal/modules/cjs/loader.js:723:23) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
In case#1, the”missing ) after argument list” error is produced when a comma or the addition operator (+) is not added between the parameters in a function.
To resolve the error, ensure that any syntax errors in the parameter list of your function calls are corrected.
// Here we are using '+' operator for separation console.log('welcome to ' + ' Btechgeeks'); // Here we are using comma(,) to separate the arguments console.log('Btechgeeks'.slice(0, 3));
Output:
welcome to Btechgeeks Bte
Delimiting a string with backticks (“)
Missing after argument list javascript: If you have a string that contains both double and single quotes, use a template literal, which is a string delimited by backticks (“).
// This is WRONG approch const gvn_string1 = 'They're playing'; // Write the string as here while using both double and single quotes const gvn_string2 = "They're playing" // Or we can also write in this way using backticks(``) const gvn_string3 = `They're playing`
Because template literals enclose the string with backticks, we can use both single and double quotes in the string’s contents without getting errors or having to escape any single or double quotes.
Conclusion
- To resolve the “missing) after argument list” problem, ensure that any syntax errors are corrected when calling functions.
- When the function is invoked, the error is frequently issued if the function arguments are not separated by a comma or the addition operator.
SyntaxError: missing ) after argument list
The JavaScript exception «missing ) after argument list» occurs when there is an error with how a function is called. This might be a typo, a missing operator, or an unescaped string.
Message
SyntaxError: missing ) after argument list (V8-based & Firefox) SyntaxError: Unexpected identifier 'x'. Expected ')' to end an argument list. (Safari)
Error type
What went wrong?
There is an error with how a function is called. This might be a typo, a missing operator, or an unescaped string, for example.
Examples
Because there is no «+» operator to concatenate the string, JavaScript expects the argument for the log
function to be just "PI: "
. In that case, it should be terminated by a closing parenthesis.
console.log('PI: ' Math.PI);
You can correct the log
call by adding the +
operator:
console.log('PI: ' + Math.PI);
Alternatively, you can consider using a template literal, or take advantage of the fact that console.log
accepts multiple parameters:
console.log(`PI: ${Math.PI}`); console.log('PI: ', Math.PI);
Unterminated strings
console.log('"Java" + "Script" = "' + 'Java' + 'Script");
Here JavaScript thinks that you meant to have );
inside the string and ignores it, and it ends up not knowing that you meant the );
to end the function console.log
. To fix this, we could put a'
after the «Script» string:
console.log('"Java" + "Script" = "' + 'Java' + 'Script"'); // '"Java" + "Script" = "JavaScript"'
See also
- Functions
JavaScript
-
SyntaxError: missing = in const declaration
The JavaScript exception «missing const declaration» occurs when was not given value same statement (like RED_FLAG;).
-
SyntaxError: missing name after . operator
The JavaScript exception «missing name after The dot operator is used for property access.
-
SyntaxError: missing ) after condition
The JavaScript exception «missing after condition» occurs when there an error with how if written.
-
SyntaxError: missing ; before statement
The JavaScript exception «missing before statement» occurs when there semicolon somewhere and can’t added by automatic insertion (ASI).