Можете ли вы добавить условие к объявлению переменной?
Это не имеет смысла для меня, но у меня есть ощущение, что я видел код, используя это:
var abc = def || ghi;
Мой вопрос в том, действительно ли это? Можем ли мы добавить условие к объявлению переменной? Я думаю, что ответ - нет, но у меня есть это в глубине моего сознания, что я однажды увидел что-то подобное в коде.
Ответы
Ответ 1
Это дает 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 || {};
Ответ 2
Код 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;
Ответ 3
Да, вы можете добавить условие к объявлению переменной
Вы можете использовать его так:
function greet(person) {
var name = person || 'anonymouse';
alert('Hello ' + name);
}
greet('jashwant');
greet();
jsfiddle demo
Ответ 4
ОК, видите, это что-то вроде, вы либо проверяете, является ли это правдой. Истинный будет возвращен.:)
var abc = def || ghi;
Является эквивалентным:
var abc = return (def == true) or (ghi == true)