Kayote
Kayote

Reputation: 15617

Can you add a condition to a variable declaration?

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.

Upvotes: 10

Views: 12178

Answers (4)

Denys Séguret
Denys Séguret

Reputation: 382132

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 || {};

Upvotes: 17

epascarello
epascarello

Reputation: 207501

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;

Upvotes: 6

Praveen Kumar Purushothaman
Praveen Kumar Purushothaman

Reputation: 167172

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)

Upvotes: 0

Jashwant
Jashwant

Reputation: 29005

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

Upvotes: 3

Related Questions