Я согласен с ответом от zacherates.
Но вы можете сделать вызов intern () в ваших нелиберальных строках.
Из примера zacherates:
// ... but they are not the same object
new String("test") == "test" ==> false
Если вы ставите нелитеральное равенство строки, это правда
new String("test").intern() == "test" ==> true
ИМХО, вам не нужно ничего делать. JavaScript оснащен Arguments aobject
, arguments
является зарезервированным ключевым словом, которое вы можете использовать следующим образом:
function unlimitedArgs() {
console.log(arguments)
}
unlimitedArgs(2,4, 'v1');
unlimitedArgs(2,4, 'v1', [2,4,5], "some other value");
Или вы можете использовать spread operator
, чтобы сделать что-то вроде этого:
function unlimitedArgs(...gatherer) {
console.log(gatherer)
}
unlimitedArgs(2,4, 'v1');
unlimitedArgs(2,4, 'v1', [2,4,5], "some other value");
ПРИМЕЧАНИЕ : Если вы используете оператор спредов, контейнерная переменная (т.е. gatherer
) будет иметь тип Array
.
может быть, этот пример помогает
function printNames(...names) {
console.log(`number of arguments: ${names.length}`);
for (var name of names) {
console.log(name);
}
}
printNames('foo', 'bar', 'baz');
. Какими бы ни были аргументы, вы можете передавать неограниченные аргументы и обращаться к ним так же, как и выше.