#javascript #function-parameter
#javascript #функция-параметр
Вопрос:
Я думаю, что это скорее вопрос для начинающих: как я могу обратиться к определенному параметру в функции и игнорировать остальные?
Пример:
function test(para_1, para_2, para_3) {
if (para_3 == true) {
alert('only the third parameter was successfully set!');
}
}
test(para_3=true);
Я хочу индивидуально решить, использую ли я определенный параметр в функции или нет.
Комментарии:
1. Передайте хэш-карту в функцию
Ответ №1:
Вы можете проверить каждый параметр отдельно, используя if(param)
, например:
function test(para_1, para_2, para_3) {
if (para_1) {
// First parameter set
}
if (para_2) {
// Second parameter set
}
if (para_3) {
// Third parameter set
}
}
Вообще говоря, вы не можете задать только один параметр и ожидать, что он будет третьим, потому что он автоматически установит его равным первому, а остальные 2 — как undefined
. Итак, если вы хотите вызвать свою функцию и у вас есть только третий набор, скорее всего, вы бы сделали
test(null, null, 'this_is_set');
Ответ №2:
В JavaScript невозможно передавать именованные аргументы. Лучшее, что вы можете сделать, это принять объект в качестве отдельного параметра, и оттуда вы решаете, какие свойства устанавливать.
function test(obj) {
if (obj.para_3 == true) {
alert('only the third parameter was successfully set!');
}
}
test({para_3:true});
Комментарии:
1. Это неверно; вы можете утверждать, что параметр не равен undefined.
2. @JimmyBreck-McKye какая часть неверна? Я думаю, что этот ответ лучше всего соответствует тому, что ищет OP.
3. @Segfault — Операционная система хочет определить, был ли передан параметр ‘para3’. Scimonster говорит, что это невозможно, но это так — вы можете проверить, не определен ли para3 === . Хотя подход с использованием аргумента map является более гибким и более читаемым для нескольких необязательных параметров, он, как следует из ответа, не является единственным вариантом, предоставляемым языком.
4. @JimmyBreck-McKye Я немного изменил свой ответ.
Ответ №3:
Вы также можете применить аргументы, хранящиеся в массиве. Элементы массива аргументов будут сопоставлены параметрам функции.
var arg = [];
arg[2] = true;
test.apply(this, arg);
другой способ — просто установить для других параметров значение undefined:
test(undefined, undefined, true);