Можно ли добавить условие в объявление переменной?

Это не имеет смысла для меня, но у меня такое чувство, что я видел код, использующий это:

var abc = def || ghi;

мой вопрос в том, действительно ли это? Можем ли мы добавить условие к объявлению переменной? Я предполагаю, что ответ "нет", но у меня есть это в глубине души, что я видел что-то подобное в коде однажды.

4 ответов


здесь abc значение def если это не ложь (т. е. не false, null, undefined, 0 или пустая строка), или значение ghi если не.

это эквивалентно:

var abc;
if (def) abc = def;
else abc = ghi;

это обычно используется для выполнения следующих функций:

function myfunc (opts) {
    var mything = opts.mything || "aaa";
}

если вы называете myfunc({mything:"bbb"}) он использует значение, которое вы даете. Он использует "aaa" если вы ничего не дают.

в этом случае, чтобы позволить вызывающему полностью пропустить параметр, мы также можно было запустить функцию с помощью

opts = opts || {};

код var abc = def || ghi;

это то же самое как

if (def) { //where def is a truthy value
   var abc = def;
} else {
   abc = ghi;
}

вы хотите условие, как оператор if?

if (xxx==="apple") { 
    var abc = def;
} else {
    abc = ghi;
}

который записывается как тернарный оператор:

var abc = (xxx==="apple") ? def : ghi;

да, вы можете добавить условие для переменной

вы можете использовать его так,

function greet(person) {
    var name = person || 'anonymouse';
    alert('Hello ' + name);
}
greet('jashwant');
greet();​

jsfiddle demo


хорошо, видите, это что-то вроде, Вы либо проверяете, верно ли это. Истинный будет возвращен. :)

var abc = def || ghi;

эквивалентно:

var abc = return (def == true) or (ghi == true)