This doesn't make sense to me, but I have a feeling I saw a code using this:
var abc = def || ghi;
My question is, is this valid? Can we add a condition to a variable declaration? I imagine the answer is no but I have this at the back of my mind that I saw something similar in code once.
This gives to abc
the value of def
if it isn't falsy (i.e. not false
, null
, undefined
, 0
or an empty string), or the value of ghi
if not.
This is equivalent to:
var abc;
if (def) abc = def;
else abc = ghi;
This is commonly used for options:
function myfunc (opts) {
var mything = opts.mything || "aaa";
}
If you call myfunc({mything:"bbb"})
it uses the value you give. It uses "aaa"
if you provide nothing.
In this case, in order to let the caller wholly skip the parameter, we could also have started the function with
opts = opts || {};
The code var abc = def || ghi;
is the same thing as
if (def) { //where def is a truthy value
var abc = def;
} else {
abc = ghi;
}
You want a condition like an if statement?
if (xxx==="apple") {
var abc = def;
} else {
abc = ghi;
}
which as written as a ternary operator is:
var abc = (xxx==="apple") ? def : ghi;
Yes, you can add condition to variable declaration
You can use it like this,
function greet(person) {
var name = person || 'anonymouse';
alert('Hello ' + name);
}
greet('jashwant');
greet();
jsfiddle demo
OKay, see, it is something like, you either check if one is true. The true one will be returned. :)
var abc = def || ghi;
Is equivalent to:
var abc = return (def == true) or (ghi == true)