SyntaxError: дублирующий формальный аргумент x
Исключение JavaScript "duplicate formal argument x" или "duplicate argument names not allowed in this context" возникает, когда функция создает два или более параметра связывания с одинаковым именем, и функция не является нестрогой функцией с только простыми параметрами.
Сообщение
SyntaxError: Duplicate parameter name not allowed in this context (V8-based) SyntaxError: duplicate formal argument x (Firefox) SyntaxError: duplicate argument names not allowed in this context (Firefox) SyntaxError: Cannot declare a parameter named 'x' in strict mode as it has already been declared. (Safari) SyntaxError: Duplicate parameter 'x' not allowed in function with default parameter values. (Safari) SyntaxError: Duplicate parameter 'x' not allowed in function with a rest parameter. (Safari) SyntaxError: Duplicate parameter 'x' not allowed in function with destructuring parameters. (Safari)
Тип ошибки
Что пошло не так?
Наличие двух формальных параметров с одинаковым именем, вероятно, является ошибкой — второе вхождение сделало бы первое вхождение недоступным по имени параметра. В устаревшем JavaScript это было разрешено. Поэтому, чтобы не нарушать существующий код, это является ошибкой только в том случае, если код гарантированно не является устаревшим — либо потому, что он находится в строгом режиме, либо он использует современный синтаксис параметров (rest, default или destructured параметры).
Примеры
Недопустимые случаи
"use strict";
function add(x, x) {
// How can you access both "x" parameters?
// SyntaxError: duplicate formal argument x
}
function doSomething(name, { name }) {
// How can you access both "name" parameters?
// SyntaxError: duplicate argument names not allowed in this context
}
Допустимые случаи
function doSomething(operationName, { name: userName }) {
// You can access both "operationName" and "userName" parameters.
}
function doSomething(name, user) {
// You can access both "name" and "user.name" parameters.
}
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Duplicate_parameter