Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript Functions and optional arguments

I have two nearly identical javascript functions that are used to initiate a jquery $.get call. The arguments to the function are passed to the script being called.

The problem is that one set of calls requires an additional argument that the other does not.

To accomplish this I'm using the two nearly identical javascript functions I've mentioned. Here they are:

function process(url, domid, domain, scan_id) {     $.get(url,     {         domain: domain,         scan_id: scan_id     },      function(data)     {         $(domid).html(data);     }); }  function process_type(url, domid, type, domain, scan_id) {     $.get(url,     {         domain: domain,         type: type,         scan_id: scan_id     },      function(data)     {         $(domid).html(data);     }); } 

As you can see, the 2nd function merely accepts an additional argument called 'type' which is then passed through the $.get call.

I want to combine these two functions, but I'm not sure how I can optionally include that 3rd argument in that ( array / object / whatever it is in { } ( yes, javascript noob) ) that's being passed in $.get.

EDIT just to say.... damn, you guys are good. :D

like image 566
Ian Avatar asked Feb 25 '09 19:02

Ian


People also ask

Can JavaScript functions have optional parameters?

To declare optional function parameters in JavaScript, there are two approaches: Using the Logical OR operator ('||'): In this approach, the optional parameter is Logically ORed with the default value within the body of the function. Note: The optional parameters should always come at the end on the parameter list.

What are optional function arguments?

Optional arguments enable you to omit arguments for some parameters. Both techniques can be used with methods, indexers, constructors, and delegates. When you use named and optional arguments, the arguments are evaluated in the order in which they appear in the argument list, not the parameter list.

Can I use a function as an argument in JavaScript?

Passing a function as an argument to the function is quite similar to the passing variable as an argument to the function. so variables can be returned from a function.

What are function arguments in JavaScript?

Arguments are Passed by ValueThe parameters, in a function call, are the function's arguments. JavaScript arguments are passed by value: The function only gets to know the values, not the argument's locations. If a function changes an argument's value, it does not change the parameter's original value.


1 Answers

all parameters in javascript are optional, you can use the parameters array inside of a function to access parameters passed ordinally like so:

function myFunction(option1) {    var option2 = arguments[1];    if(arguments[0] == option1)       alert("Happy Day, Option1 = " + option1 + ", Option2 = " + option2); }  myFunction("Hello", "World"); 

Produces: Happy Day, Option1 = Hello, Option2 = World

Hopefully this illustrates how you can use the arguments array to improve some code.

    function process_type(url, domid, domain, scan_id)     {             var myOptions = {                domain: domain,                scan_id: scan_id             };              if(arguments[4])                 myOptions["type"] = arguments[4];              $.get(url, myOptions,              function(data)             {                     $(domid).html(data);             });     } 

Then you can call it with the last parameter being the type as optional, if the parameter is passed it is used if not it is omitted.

Also since the actual parameter is optional in the first place you can also add the name to the end of the function definition and use the same if but instead of arguments[4] you'd do if(type) myOptions["type"] = type;

    function process_type(url, domid, domain, scan_id, type)     {             var myOptions = {                domain: domain,                scan_id: scan_id             };              if(type)                 myOptions["type"] = type;              $.get(url, myOptions,              function(data)             {                     $(domid).html(data);             });     } 

This Call would include type

 process_type("xxx", "xxx", "xxx", "xxx", "xxx"); 

where this call would not

 process_type("xxx", "xxx", "xxx", "xxx"); 
like image 134
Quintin Robinson Avatar answered Oct 13 '22 02:10

Quintin Robinson