Что означает этот код js?Javascript short condition Значение
this.totals || (this.totals={});
я полагаю ..
if(!this.totals) {
this.totals = {}
}
это правильно?
Что означает этот код js?Javascript short condition Значение
this.totals || (this.totals={});
я полагаю ..
if(!this.totals) {
this.totals = {}
}
это правильно?
Вы почти 100% правильный. Когда встречается ||
, первая часть вычисляется, и если это истинное значение, оно возвращается. Если это значение ложности, оценивается вторая часть, которая в этом случае устанавливает this.totals
в {}
и возвращает оценку, {}
.
Почему только «* почти * 100%»? – Bergi
Потому что в отличие от оператора 'if', как указал Тило в своем комментарии, это выражение, поэтому оно возвращает результат. Если у вас есть 'var a = this.totals || (this.totals = {}) '' a' будет равно 'this.totals'. Таким образом, эквивалентный оператор будет 'if (! This.totals) {this.totals = {}; } var a = this.totals; ' – winhowes
Но с'; 'в конце, это выражение * statement * :-) – Bergi
'if (typeof this.totals ==" undefined ") {' было бы лучше. Потому что 'false' /' 0' может нарушить условие. –
Почти правильно. Все это выражение, а также оценивает (новое значение) 'this.totals'. – Thilo
@Thilo: Не забывайте о запятой в конце :-) – Bergi