@Shimpanze

Как вызвать функцию без одного аргумента?

Существует ли возможность, вызывать функцию без одного аргумента? Например так:

function foo(a, b, c) {
  // ...
}

foo('a', 'c');


не так:

foo('a', null, 'c');

а именно так:

foo('a', 'c');

Спасибо!
  • Вопрос задан
  • 303 просмотра
Решения вопроса 3
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Засунуть ее в объект.
function foo(obj) {
   // obj.a, obj.b, obj.c
}
foo({a: 10, c: 20});

в ES6 можно легче
function foo({a, b, c}) {
   // a, b, c
}
foo({a: 10, c: 20});
Ответ написан
Комментировать
dollar
@dollar
Делай добро и бросай его в воду.
Если b и c имеют принципиально разные типы, либо имеют другие отличительные признаки, то внутри функции может быть соответствующая проверка.

Так что ответ: можно, но не всегда.

Пример:
function foo(name, surname, age) {
  if (typeof surname == "number") {
    age = surname;
    surname = undefined;
  }
  // ...
}
foo("Ivan", "Ivanov", 23);
foo("Ivan", 23);
Ответ написан
Комментировать
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
Если foo всегда принимает 3 или меньше аргументов, при этом соблюдается условие: -если аргументов 2, то это a и c
то вариант решения, не зависящий от типов переменных может быть таким:

function foo(a, b, c) {
	if (arguments.length === 2) {
		c = b;
		b = undefined;
	}
	// ...
       console.log(a,b,c);
}
foo("Ivan", "Ivanov", "Ivanovich");
foo("Ivan", "Ivanovich");
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы