dambergn
dambergn

Reputation: 13

javascript define arguments

I am trying to create a function in JS that is taking a lot of arguments but does not always use all of them. What I would like to do is define which argument I am putting a refrence in for. This is what I am thinking but not working like I would like it to.

function foo(arg1, arg2, arg3){
let arg1 = arg1;
let arg2 = arg2;
let arg3 = arg3;

}

foo(arg2:'sets value of arg2');

I would like to be able to skip putting in an argument for the first position and only pass info for the second argument. How can I do this?

Upvotes: 0

Views: 39

Answers (3)

Nina Scholz
Nina Scholz

Reputation: 386520

You could spread syntax ... a sparse array with the value for the wanted argument without changing the function's signature.

function foo(arg1, arg2, arg3){
    console.log(arg1, arg2, arg3)
}

foo(...[, 42]);

Or use an object with the key for a specified element

function foo(arg1, arg2, arg3){
    console.log(arg1, arg2, arg3)
}

foo(...Object.assign([], { 1: 42 }));

Upvotes: 1

Fobos
Fobos

Reputation: 1156

Try this:

It would require the caller to pass an object.

function foo({arg, arg2}={}) {
  let arg_1 = arg;
  let arg_2 = arg2;
  
  console.log(arg_1);
  console.log(arg_2);
  // Code
}

foo({arg2: 2});

if you need to set the default parameters you can do it this way function foo({arg = '', arg2 = ''}={})

Upvotes: 0

Unmitigated
Unmitigated

Reputation: 89139

You can pass in null as some of the parameters if they are not needed.

function foo(arg1, arg2, arg3){
console.log(arg1, arg2, arg3);
}
foo(null, 30, null);

Upvotes: 0

Related Questions