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

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

var abc = def || ghi;

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

Ответы на вопрос(4)

Код вар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;
 28 июн. 2012 г., 20:26
abc может быть глобальным, зависит только от того, где оно определено.
 28 июн. 2012 г., 20:22
Только что видел живой пример того, что я прочитал вчера (Javascript Hoist). Даже еслиdef неверно в вашем первом примере,abc не является глобальным. Я прав ?
Решение Вопроса

Это дает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 || {};
 28 июн. 2012 г., 20:10
+1. Может быть более точным сказать, что & quot;def оценивается как true & quot ;, так как если это0пустая строка,false и т.д. тогдаabc получит значениеghi.

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

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

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

демоверсия jsfiddle

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

var abc = def || ghi;

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

var abc = return (def == true) or (ghi == true)
 27 авг. 2012 г., 20:29
Осторожный. Ваш ответ подразумевает, что эта операция всегда присваивает логическое значение. Этоonly случай, еслиdef а такжеghi являются булевыми значениями. Во всех случаях,abc примет значениеghi (независимо от того, что это значение)unless def evalutes to true, Еслиdef is "hello", тогда abc будет "hello" (не Booelan). Еслиdef является ложным / пустым / нулем / неопределенным / и т. д., иghi «Мир», тоabc будет "мир" (опять же, не булево).

Ваш ответ на вопрос