You're very close! Try something like the below (if it doesn't work, try using two equals signs instead of three; it assumes you're casting strict types).
Code:
var x = dosomething("yadda", (sometest()===true? "yep" : "blah"));
Visit Slightly Remarkable to see my portfolio, resumé, and consulting rates.
Where the () signifies an empty list, so that the argument list is either a two-item "yadda","blah" or a three-item "yadda","yep","blah". (And the trailing comma is a great convenience for future cut-and-paste of lines of code.)
Does javascript have an empty-list expression like () in perl?
Does javascript have an empty-list expression like () in perl?
To Rnd's credit, he's already answered your question. I have some additional input that I'd like to share, though. Feel free to ignore me if you aren't interested in exploring alternative design for your program.
You can use object or array literal syntax({} for an object, [] for an array), but you'll have to modify the way your dosomething() function works. It's appropriate to use an object as a parameter for JavaScript functions anyway.
This is the design of your existing function, which takes the named parameters and performs operations on them. However, you must always call your dosomething() function with its parameters in a specific order or sequence. This can make programming difficult sometimes because, as you have already encountered, you have to specify something in the first or second parameter location in order to define the value of another.
Instead, you can rewrite your function to something like this:
Essentially, you can configure the properties of an object and pass the entire object to your function, and then allow the function (dosomething()) to handle the object. This has the additional benefit of permitting empty objects (which gets as close as possible to your empty list in Perl)
Of course, your new dosomething function should account for the possibility that the object passed to it may have properties omitted. In other words, the function should prepare to deal with an empty object.
Code:
function dosomething (params){
if (typeof params.a !== 'undefined'){
return params.a;
}
}
There are better, more dynamic ways for your function to handle object parameters by extending an empty object and cloning properties not inherited by the object passed, but you get the basic idea.
Hope this helps provide some insight into the language. Happy coding.
Visit Slightly Remarkable to see my portfolio, resumé, and consulting rates.
use "undefined" instead of "()" but know that any use of a comma will increment the argument slot passed to a function; youll pass dosomething("yadda",undefined,"blah") .
to presever the order, you can do some fancy array/apply things, or code two function invocations:
Bookmarks