Can you add a condition to a variable declaration?

2020-02-12 03:17发布

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.

4条回答
我命由我不由天
2楼-- · 2020-02-12 03:36

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 || {};
查看更多
闹够了就滚
3楼-- · 2020-02-12 03:43

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;
查看更多
别忘想泡老子
4楼-- · 2020-02-12 03:44

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

查看更多
ゆ 、 Hurt°
5楼-- · 2020-02-12 03:51

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)
查看更多
登录 后发表回答