что делает дата && новая дата (дата)?

Я наткнулся на это в файле bootstrap-datepicker.js.

В функции _setDate автор делает

this.viewDate = date && new Date(date)

Они также делают это еще пару раз. Что это делает и почему они не могут просто установить

this.viewDate = date

or

this.viewDate = new Date(date)

https://github.com/eternicode/bootstrap-datepicker


person Steven Harlow    schedule 01.10.2014    source источник
comment
@karthikr: Нет, это не как логические операторы работают в JS.   -  person Felix Kling    schedule 02.10.2014
comment
Возможно, это лучший дубликат: stackoverflow.com/a/12162443/218196. Или любой из них: stackoverflow.com/search?q=%5Bjavascript%5D+%22 %26%26%22   -  person Felix Kling    schedule 02.10.2014


Ответы (1)


Если значение date ложно (в данном случае скорее всего null или undefined; '' (пустая строка), 0 (число), NaN и само false тоже подходят), то оно присваивается this.viewDate - а new Date часть даже не будет оценивается. В противном случае new Date(date) назначается this.viewDate.

Это примерно эквивалентно...

this.viewDate = date ? new Date(date) : date;

... или, еще более подробно:

if (date) {
  this.viewDate = new Date(date);
}
else {
  this.viewDate = date;
}
person raina77ow    schedule 01.10.2014