Получить имена параметров функций JS - PullRequest
0 голосов
/ 03 мая 2020

Я не знаю, как получить имена параметров, например:

function func(sep='\n') {
    var args = Array.prototype.slice.call(arguments);
}

func("Arg1", "Argument2", "Something", sep="MySeparator")

// I want to get value of "sep" in arguments of function
// In this example it should set optional parameter "sep" to "MySeparator"

Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Нет, вы не можете получить имя аргумента, если вы хотите, чтобы в качестве аргументов использовались пары имя / значение, попробуйте передать его как объект, как показано ниже.

function func(args) {
     args.arg1;
     args.arg2;
}

func({ arg1: “some value”, arg2: “other value” });
0 голосов
/ 03 мая 2020

Я не уверен, правильно ли я понял проблему, но похоже, что вы хотите реализовать что-то вроде этого:

function func(separator = '\n', ...args) {
  return args.join(separator);
}

console.log(func(' - MySeparator - ', 'Arg1', 'Arg2', 'Arg3'));

Первый аргумент в func принимает разделитель, который вы хотите использовать, а все остальные аргументы будут переданы в виде массива в функцию, где вы можете использовать join склеить их вместе с вашим разделителем.

UPD1 : Почему мы не можем сначала принять аргумент распространения, а затем разделитель в конце?

Как указано в MDN :

Последний параметр функции может иметь префикс ..., что приведет к тому, что все оставшиеся (предоставленные пользователем) аргументы будут помещены в «стандарт» * Массив 1029 *. Только последний параметр может быть параметром rest.

Краткое объяснение этого случая: мы не знаем, передал ли разработчик аргумент в separator или остальные аргументы. Вот почему мы используем известные позиционные аргументы, чтобы сопоставить их с соответствующими именами переменных, и только тогда мы можем использовать «все, что осталось».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...