У меня есть функция example(arg1,arg2,arg3,arg4), и она для чего-то использует arg4. Есть ли способ пропустить другие аргументы вместо того, чтобы использовать их как неиспользуемые переменные.
Я попробовал example(,,,arg4), но это не работает
В JavaScript нет поддержки того, что вы хотите сделать. Поэтому лучший подход — спроектировать свой API так, чтобы более необязательные аргументы находились в конце списка, а наиболее часто передаваемые аргументы — в начале.
Вы спрашиваете об определении функции с неиспользуемыми параметрами, верно? Не звонишь?
Если аргументы с 1 по 3 не используются, а внутри тела функции необходим/используется только аргумент 4 – почему вы определяете функцию таким образом?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы ищете компактный способ вставки набора значений null в аргументы функции, возможно, это вам подойдет.
Создайте вспомогательную функцию, которая генерирует массив нулевых значений.
const no = howMany => Array(howMany).fill(null);
Затем, когда вы вызываете свою функцию, просто распространите результат этого помощника на свои аргументы.
то есть
//instead of
example(null, null, null, someVar4);
//do
example(...no(3), someVar4);
Если у вас есть контроль над созданием этой функции, которую вы используете, есть более эффективные способы выполнить подобную задачу, но в качестве прямого ответа на заданный вами вопрос, надеюсь, это поможет :) Если вам нужны какие-либо объяснения/ разъяснения, спрашивайте.
Вы можете создать функцию-оболочку, которая принимает объект вместо четырех аргументов и преобразует его в вызов исходной функции. Затем вы можете указать аргументы, которые хотите предоставить, по имени:
function example(arg1,arg2,arg3,arg4) {
console.info(arg1,arg2,arg3,arg4); // Mock implementation: just prints the four arguments
}
// Wrapper that takes object instead of separate arguments
function example2({arg1, arg2, arg3, arg4} = {}) {
return example(arg1, arg2, arg3, arg4);
}
// Example use: only providing arg4:
example2({arg4: 1});Вы можете сделать это, если измените свои параметры и способ их передачи. Посмотрите на этот пример:
function test({ a = null, b = null, c = null } = {}) {
a ? console.info({ 'a': a }): ''
b ? console.info({ 'b': b }): ''
c ? console.info({ 'c': c }): ''
}
// Calling the function with all parameters
test({ a: 1, b: 2, c: 3 });
// Calling the function with only one parameter
test({ b: 'Only pass b' });
// Calling the function with no parameters
test();
Вы не можете их пропустить, но можете указать значения по умолчанию (пустые строки,
nullи т. д.) в зависимости от того, как вы реализовали функцию. При этом лучшим подходом было бы изменить функцию, чтобы она принимала объект, свойства которого вы можете включать/опускать по желанию.