What would be the most idiomatic way to do the following in JavaScript:
If myParam
is not passed into MyFunc
by the caller, then I want to set it to a default value. But first I want to try and get it from another object, which may not yet exist:
function MyFunc(myParam) {
if (!myParam) {
if (!myObj) {
myParam = 10;
}
else {
myParam = myObj.myParam;
}
}
alert(myParam);
}
I started to write:
myParam = myParam || myObj.mParam || 10
but realized that if myObj
does not exist then this would fail. I might guess the following:
myParam = myParam || (myObj && myObj.mParam) || 10
It might even work. But is it the best way?
How would, for example, John Resig do it?
The OR Assignment (||=) Operator The logical OR assignment ( ||= ) operator assigns the new values only if the left operand is falsy. Below is an example of using ||= on a variable holding undefined . Next is an example of assigning a new value on a variable containing an empty string.
In JavaScript, function parameters default to undefined . However, it's often useful to set a different default value.
You can set the default values for variables by adding ! default flag to the end of the variable value. It will not re-assign the value, if it is already assigned to the variable.
Default function parameters allow formal parameters to be initialized with default values if no value or undefined is passed. function foo(a, b) { a = typeof a !==
If myObj is a global it needs to reference the window object, otherwise it will throw an error if myObj
is undefined.
myParam = myParam || (window.myObj ? window.myObj.mParam : 10);
or
myParam = myParam || (window.myObj && window.myObj.mParam) || 10;
This works as well:
myParam = myParam || ((typeof myObj !== "undefined") ? myObj.mParam : 10);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With